Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
70 / 70 / 36
Регистрация: 16.06.2009
Сообщений: 240
1

Строка - количество слов с определенной буквой

19.04.2010, 19:59. Просмотров 662. Ответов 9
Метки нет (Все метки)

Всем привет!
Имеется такая задачка:
Дана строка, состоящая из 8 слов, разделенных 1 пробелом. Определить кол-во слов, в которых буква "а" встречается 3 раза.

Я так понимаю, что нужно считать 1 слово, записать его в буфер и проверить кол-во "а", и если оно=3, то счетчик +1. И так далее по каждому слову. Но у меня не получается реализовать этот алгоритм: непонятно, как считать отдельное слово. Подскажите, пжлст ...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2010, 19:59
Ответы с готовыми решениями:

Посчитать количество слов с буквой а
Ребята, помогите, пожалуйста))) В чём ошибка? Задание: Задан текст. Необходимо посчитать...

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

Количество слов, начинающихся и заканчивающихся одной буквой
#include <conio.h> #include <string.h> #include <iostream.h> #pragma argsused int main() {...

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

9
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10876 / 6767 / 1619
Регистрация: 25.07.2009
Сообщений: 12,484
19.04.2010, 20:20 2
Количество слов восемью не ограничено:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
 
int main(){
    std::string buf, tmp;
    const char ch = 'a';
    const int matches = 3;
    std::cout << "String: ";
    std::getline(std::cin, buf);
    std::istringstream ist(buf);
    size_t cnt = 0;
    while( ist >> tmp )
        if ( std::count(tmp.begin(), tmp.end(), ch) == matches )
            ++cnt;
    std::cout << cnt << " words contains " << matches << " characters '" << ch << "'" << std::endl;
    return 0;
}
1
Jesus loves me
Эксперт С++
5110 / 3122 / 353
Регистрация: 12.12.2009
Сообщений: 7,899
Записей в блоге: 2
19.04.2010, 20:25 3
Задаем 2 переменные: 1ая - счетчик слов, 2ая - счетчик букв "а". Считываем строку побайтно, сравниваем байт с "а" - если равно - счетчик "а" +1, если счетчик "а"=3, тогда счетчик слов +1, тут же сравниваем с " "(пробел) - если равно - счетчик "а"=0. В общем что-то типа :
C++
1
2
3
4
5
6
7
8
for (i=0; str[i]; i++)  {// str[i] -очередной байт из строки (строка же типа char, т.е. символ=байт)
   if (str[i]=='a')
   counta++;  //счетчик "а" 
   if (counta==3)
  counts++;  // счетчик слов
  if (str[i]==' ')
  counta=0; 
}
не, не совсем правильно, сходу написал, потом ошибку нашел)
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
19.04.2010, 20:26 4
все работает
0
Jesus loves me
Эксперт С++
5110 / 3122 / 353
Регистрация: 12.12.2009
Сообщений: 7,899
Записей в блоге: 2
19.04.2010, 20:35 5
C++
1
2
3
4
5
6
7
8
for (i=0; str[i]; i++)  {// str[i] -очередной байт из строки (строка же типа char, т.е. символ=байт)
   if (str[i]=='a')
   counta++;  //счетчик "а" 
   if ((str[i]==' ')&&(counta>=3)) {
  counts++;  // счетчик слов
  counta=0;}
 
}
Вроде так
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10876 / 6767 / 1619
Регистрация: 25.07.2009
Сообщений: 12,484
19.04.2010, 20:46 6
Цитата Сообщение от PointsEqual Посмотреть сообщение
все работает
ага, даже картинка есть
Строка - количество слов с определенной буквой
0
70 / 70 / 36
Регистрация: 16.06.2009
Сообщений: 240
19.04.2010, 20:52  [ТС] 7
А у меня ошибка вылазит ((( Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream> 
#include <string> 
using namespace std;
int main(){ 
    int i, counta=0, counts=0;
    char *str = new char [];
    gets(str);
 
for (i=0; str[i]; i++)  {
   if (str[i]=='a')
     counta++;  //счетчик "а" 
   if ((str[i]==' ')&&(counta>=3)) {
     counts++;  // счетчик слов
     counta=0;}
}
cout<<counts<<endl;
return 0;
}
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
19.04.2010, 20:55 8
amfisat, замени этот код, выше правилный же
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10876 / 6767 / 1619
Регистрация: 25.07.2009
Сообщений: 12,484
19.04.2010, 20:55 9
Цитата Сообщение от amfisat Посмотреть сообщение
А у меня ошибка вылазит
Первое, что заметил:
Цитата Сообщение от amfisat Посмотреть сообщение
char *str = new char [];
компилятор угадать должен, какого размера массив создать?
0
Jesus loves me
Эксперт С++
5110 / 3122 / 353
Регистрация: 12.12.2009
Сообщений: 7,899
Записей в блоге: 2
20.04.2010, 08:13 10
C++
1
2
3
4
5
6
7
8
9
for (i=0; str[i]; i++)  {
   if (str[i]=='a')
         counta++;  //счетчик "а" 
   if ((str[i]==' ')&&(counta>=3)) {
         counts++;  // счетчик слов
         counta=0;
   if ((str[i]==' ')&&(counta<3)) // добавить эти 2 строки
         counta=0;  }
}
Я только начал писать на C, до этого на ASMe писал(пишу), поэтому код не совсем удачный, но в таком виде как сейчас, вроде должен работать правильно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2010, 08:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

Определить количество слов начинающихся и оканчивающихся одной и той же буквой
Дан текст. Определить количество слов начинающихся и оканчивающихся одной и той же буквой как...

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


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

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

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