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

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

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

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

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

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

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

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

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

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

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

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

Нужно найти слова которые встречаются в буквы "a" "z" - C++
Даны две буквы &quot;a&quot; &quot;z&quot; и текст, нужно найти и вывести те слова в которых встречаются две эти буквы вот мой вариант но он не работает ...

Определить длину каждого слова. Удалить все буквы "а" и "о" с фамилии - C++
3.Написать программу, вводите фамилию, имя и отчество одной строкой. Определить длину каждого слова. Удалить все буквы &quot;а&quot; и &quot;о&quot; с фамилии....

Заданный словарь слов. Найти в нем слова-палиндромы, то есть такие, которые одинаково читаются слева направо и наоборот, например, "АННА", "ШАЛАШ" - C++
Заданный словарь слов. Найти в нем слова-палиндромы, то есть такие, которые одинаково читаются слева направо и наоборот, например, &quot;АННА&quot;,...

Подсчитать количество слов "KSM" и "SKS" в строке - C++
Доброго времени суток, господа. Не знаю что делать с поставленном мне задачей -- подсчитать количество слов &quot;KSM&quot; и &quot;SKS&quot; в строке char...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 происходит.

ЗЫ. Сорри если не совсем понятно высказал свою мысль
UnsKneD
алкокодер
153 / 149 / 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')
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
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;
}
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
20.01.2013, 18:34     Определить количество слов, которые содержат ровно четыре буквы "о", "О" #5
У меня есть вопрос по коду )
Что такое
C++
1
const char obig(*"О")
вот эта звездочка перед кавычками и почему кавычки двойные ?
Одинарные символы ведь в одинарных пишутся ...
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
20.01.2013, 18:41     Определить количество слов, которые содержат ровно четыре буквы "о", "О" #6
Stanis, да, там надо записать
C++
1
 const char obig('О')
Просто char редко не часто использую.

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

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