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

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

Войти
Регистрация
Восстановить пароль
 
amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 240
#1

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

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

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

Я так понимаю, что нужно считать 1 слово, записать его в буфер и проверить кол-во "а", и если оно=3, то счетчик +1. И так далее по каждому слову. Но у меня не получается реализовать этот алгоритм: непонятно, как считать отдельное слово. Подскажите, пжлст ...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2010, 19:59     Строка - количество слов с определенной буквой
Посмотрите здесь:
Определить количество слов, заканчивающихся буквой а C++
C++ Количество слов, начинающихся и заканчивающихся одной буквой
Посчитать количество слов, начинающихся согласной и заканчивающихся буквой а C++
Определить количество слов, начинаются и заканчиваются одной и той же буквой C++
C++ Определить количество слов начинающихся и оканчивающихся одной и той же буквой
C++ Найти количество слов начинающихся и заканчивающихся одной и той же буквой
C++ Дана строка, состоящая из русских слов. Найти количество слов, которые содержат ровно три буквы «А»
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9460 / 5473 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
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;
}
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
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; 
}
не, не совсем правильно, сходу написал, потом ошибку нашел)
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
19.04.2010, 20:26     Строка - количество слов с определенной буквой #4
все работает
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
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;}
 
}
Вроде так
easybudda
Эксперт С++
9460 / 5473 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
19.04.2010, 20:46     Строка - количество слов с определенной буквой #6
Цитата Сообщение от PointsEqual Посмотреть сообщение
все работает
ага, даже картинка есть
Строка - количество слов с определенной буквой
amfisat
67 / 67 / 1
Регистрация: 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;
}
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
19.04.2010, 20:55     Строка - количество слов с определенной буквой #8
amfisat, замени этот код, выше правилный же
easybudda
Эксперт С++
9460 / 5473 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
19.04.2010, 20:55     Строка - количество слов с определенной буквой #9
Цитата Сообщение от amfisat Посмотреть сообщение
А у меня ошибка вылазит
Первое, что заметил:
Цитата Сообщение от amfisat Посмотреть сообщение
char *str = new char [];
компилятор угадать должен, какого размера массив создать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2010, 08:13     Строка - количество слов с определенной буквой
Еще ссылки по теме:
Строка, введенная пользователем, состоит из слов, разделенных запятой. Подсчитать и вывести на экран количество введенных слов C++
Определить количество слов, которые начинаются и заканчиваются одной той же буквой C++
Определить количество слов, которые начинаются и заканчиваются одной и той же буквой C++
C++ Найти количество слов, которые начинаются и заканчиваются одной и той же буквой
C++ В тексте найти количество слов, начинающихся и заканчивающихся гласной русской буквой

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
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 писал(пишу), поэтому код не совсем удачный, но в таком виде как сейчас, вроде должен работать правильно.
Yandex
Объявления
20.04.2010, 08:13     Строка - количество слов с определенной буквой
Ответ Создать тему
Опции темы

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