8 / 8 / 13
Регистрация: 31.10.2011
Сообщений: 294
1

Определить количество слов, которые содержат ровно четыре буквы "о", "О"

20.01.2013, 15:40. Показов 1802. Ответов 5
Метки нет (Все метки)

Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые содержат ровно четыре буквы "о".

Помогите, вот есть программа, но что то она не корректно работает... Если ввожу два слова с 4 буквами О, то оно выводит что 2 слова. А если ввожу например слово с двумя буквами О, а потом ввожу слово с 4 буквами О, то пишет что слов с 4 буквами О, - нету.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"rus");
    int Ocount=0;
    int Wcount=0;
 
    char a='a';
    cout<<"Введите предложение - ";
    setlocale(LC_ALL,".866");
    do
    {
        a=getche();
 
        if (a==-82 || a==-114)
            Ocount++;
        if (Ocount==4)
            if (a==32 || a=='\r')
            {
                Wcount++;
                Ocount=0;
            }
    } while (a!='\r');
    setlocale(LC_ALL,"rus");
    cout<<"\nВ предложении "<<Wcount<<" слов(а) с 4-мя буквами \'О\' или \'о\'\n";
    getch();
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2013, 15:40
Ответы с готовыми решениями:

Определить количество слов, которые содержат ровно четыре буквы
Помогите. Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими)....

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

Найти количество слов, которые содержат хотя бы одну букву "а"
дана строка состоящая из русских слов набраных загалавными буквами и разделенных пробелами(1 или...

Найти количество слов, которые содержат хотя бы одну букву "A"
Надо решить задачу к седьмому уроку) дана строка состоящая из слов набранных заглавными буквами...

5
173 / 173 / 57
Регистрация: 08.01.2013
Сообщений: 335
20.01.2013, 17:02 2
я так понял, что у вас вводится символ, проверяется, если это "о" или "О" то Ocount++, и дальше если Ocount=4 и a==32 || a=='\r', то считаем что одно слово с 4 буквами "о" есть, и Ocount сбрасывается в ноль. Но если у вас в слове 2 буквы "о", то счетчик Ocount не сброситься, а следовательно, при вводе второго слова, он продолжит считать буквы "о", досчитает до 4, но тогда условие if (a==32 || a=='\r') не выполнится, и опять все по новой. У меня нет компилятора, поэтому проверить свое предположение не могу, но вы можете ввести 2 слова с двумя буквами "о", и если программа выдаст вам, что слов с 4-мя буквами - одно, то мое предположение верно, ну или в отладчике посмотреть, что там с Ocount происходит.

ЗЫ. Сорри если не совсем понятно высказал свою мысль
0
алкокодер
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
20.01.2013, 17:16 3
HelloInside,
Почему бы не обнулять счётчик после каждого пробела?

Добавлено через 8 минут
C++
1
if (a==32 || a==' ')
вместо
C++
1
if (a==32 || a=='\r')
0
414 / 410 / 95
Регистрация: 06.10.2011
Сообщений: 832
20.01.2013, 17:16 4
Я бы так сделал. Если есть вопросы по коду, то задавай. Что бы брать текст от пользователя то надо юзать вайд стринг или, может быть, istringsteam.
Без разницы какие знаки между словами. Компилятор GNU GCC.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <set>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "");
    string text("автомотоэлектрооборудование», «договороспособность», «локомотивовагоноремонтный», «медно-свинцово-цинково-оловянный», «мотоснегоболотоход», «обороноспособность», «толково-словообразовательный», «электрофотополупроводниковый");
    text+=" ";
    string::size_type i(0);
    const char obig(*"О");
    const char osmall(*"о");
    unsigned count_words(0),count_o(0);
    while (text[i])
    {
        if (isalpha(text[i]) || text[i]==*"я" || text[i]==*"-")
        {
            if (text[i]==obig || text[i]==osmall)
                count_o++;
        }
 
        else
        {
            if (count_o>=4)
                count_words++;
            count_o=0;
        }
 
        i++;
    }
    cout<<"words with 4x o = "<<count_words;
    return 0;
}
0
52 / 41 / 16
Регистрация: 16.12.2012
Сообщений: 144
20.01.2013, 18:34 5
У меня есть вопрос по коду )
Что такое
C++
1
const char obig(*"О")
вот эта звездочка перед кавычками и почему кавычки двойные ?
Одинарные символы ведь в одинарных пишутся ...
1
414 / 410 / 95
Регистрация: 06.10.2011
Сообщений: 832
20.01.2013, 18:41 6
Stanis, да, там надо записать
C++
1
 const char obig('О')
Просто char редко не часто использую.

вот эта звездочка перед кавычками
константный указатель на символ О
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2013, 18:41
Помогаю со студенческими работами здесь

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько...

Ввести имя фамилию и отчество как одно данное типа строка. Определить длину строки и количество гласных в нем. Удалить все буквы "а" и "о" в фамилии.
Помогите пожалуйста. Очень нужно сделать программу. Ввести имя фамилию и отчество как одно данное...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата"
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru