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

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

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

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

Помогите, вот есть программа, но что то она не корректно работает... Если ввожу два слова с 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
Ответы с готовыми решениями:

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

Дана строка, состоящая из русских слов. Найти количество слов, которые содержат ровно три буквы «А»
Дана строка, состоящая из русских слов. Найти количество слов, которые содержат ровно три буквы «А»

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

В строке найти количество слов, которые содержат ровно три буквы «А»
Дана строка, состоящая из русских слов, набранных заглавными буквами и разделенных пробелами (одним...

Определить количество слов, которые содержат ровно три буквы «А»
Здравствуйте, сегодня сыну задание в школе дали, написать на паскале программу, хотя до этого особо...

5
174 / 174 / 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
415 / 411 / 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
415 / 411 / 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
Помогаю со студенческими работами здесь

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

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

Определить количество слов, которые содержат ровно три буквы "А"
помогите пожалуйста, написал программу по заданию: дана строка, состоящая из слов, разделенных...

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

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

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


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

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

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