Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
HelloInside
7 / 7 / 1
Регистрация: 31.10.2011
Сообщений: 294
#1

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

20.01.2013, 15:40. Просмотров 820. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2013, 15:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить количество слов, которые содержат ровно четыре буквы "о", "О" (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Sergey_B
163 / 163 / 14
Регистрация: 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
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
20.01.2013, 17:16 #3
HelloInside,
Почему бы не обнулять счётчик после каждого пробела?

Добавлено через 8 минут
C++
1
if (a==32 || a==' ')
вместо
C++
1
if (a==32 || a=='\r')
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
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
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
20.01.2013, 18:34 #5
У меня есть вопрос по коду )
Что такое
C++
1
const char obig(*"О")
вот эта звездочка перед кавычками и почему кавычки двойные ?
Одинарные символы ведь в одинарных пишутся ...
1
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
20.01.2013, 18:41 #6
Stanis, да, там надо записать
C++
1
 const char obig('О')
Просто char редко не часто использую.

вот эта звездочка перед кавычками
константный указатель на символ О
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2013, 18:41
Привет! Вот еще темы с ответами:

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

Определить количество слов, начинающихся с буквы "T" - C++
Ввести текст. Слова разделены пробелами или запятыми, предложения заканчиваются знаками препинания. Длина текста может быть выбрана любой....

Определить количество слов в которые не входит буква "У" - C++
Доброго времени суток всем,совсем недавно начала изучать С++ и вот мне дали задание:&quot;С клавиатуры посимвольно вводится...

Удалять в словах, которые заканчиваются на букву "А" все другие буквы "А" - C++
Здравствуйте! Есть текст &quot;Варвара очень любит леопарда&quot;. Нужно сделать программу, которая будет удалять в словах, которые заканчиваются...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.01.2013, 18:41
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru