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

Строки, подсчёт букв - C++

Восстановить пароль Регистрация
 
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
12.11.2013, 12:14     Строки, подсчёт букв #1
Задание посчитать кол-во букв i в строке.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream.h>
#include <string.h>
main()
{
int x;
char s[100];
cout<<"Vvedite stroku: ";
cin>>s;
for(int y=0; y<strlen(s); y++)
{
if(s[y]=='i'||s[y]=='I')
x++;
}
cout<<"Bukva 'i' vstretilas "<<x<<" raz";
}
Компилируется нормально. Но значение выдаёт 1614. Где, в коде, ошибка? Проверьте пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 12:14     Строки, подсчёт букв
Посмотрите здесь:

C++ Проверка строки на наличии букв
Строки(исключить группу букв) C++
Из символов введенной строки сформировать две строки - из цифр и букв C++
Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими C++
Строки. Подсчитать количество заглавных букв в тексте; вывести на экран слова, имеющие наименьшее количество букв... (подправить) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
12.11.2013, 12:16     Строки, подсчёт букв #2
C++
1
int x = 0;
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
12.11.2013, 12:20  [ТС]     Строки, подсчёт букв #3
Точно, спасибо, теперь лучше.
Вот только всё-равно не верно. Считает буквы i только в первом слове, остальные игнорирует. Как быть?
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
12.11.2013, 12:23     Строки, подсчёт букв #4
cin.getline(s, 100); вместо cin>>s;
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
12.11.2013, 12:24     Строки, подсчёт букв #5
Используйте класс string. Вы же его подключили зачем-то...
Проблема в том, что поток расценивает пробел как символ конца потока и в массив помещается только первое слово.
cin.getline(s, 100); вместо cin>>s;
А если пользователь введет более 100 элементов? В таком случае все равно придется считывать до признака окончания потока.
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
12.11.2013, 12:28  [ТС]     Строки, подсчёт букв #6
Понял, спасибо.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
12.11.2013, 12:32     Строки, подсчёт букв #7
Цитата Сообщение от Ilot Посмотреть сообщение
поток расценивает пробел как символ конца потока
не символ конца потока, а, скорее, разделитель. Там может быть и tab и перевод строки.
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
12.11.2013, 12:35     Строки, подсчёт букв #8
Цитата Сообщение от Ilot Посмотреть сообщение
А если пользователь введет более 100 элементов? В таком случае все равно придется считывать до признака окончания потока.
Дак у него s объявлен как char[100];
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
12.11.2013, 12:49     Строки, подсчёт букв #9
Цитата Сообщение от Tulosba Посмотреть сообщение
не символ конца потока, а, скорее, разделитель. Там может быть и tab и перевод строки.
Имелось ввиду, что операция >> будет заносить данные из потока пока не встретит символ окончания потока или символ расцениваемый как таковой. А то что в буфере остаются данные никто же и не возражает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 13:01     Строки, подсчёт букв
Еще ссылки по теме:

C++ Последовательность из цифр, букв и знаков. Подсчитать чего больше и составить строки только из цифр, букв и знаков
C++ Подсчёт слов в строке. Подсчёт символов в словах строки
Удаление определенных букв из строки C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
12.11.2013, 13:01     Строки, подсчёт букв #10
Цитата Сообщение от Ilot Посмотреть сообщение
будет заносить данные из потока пока не встретит символ окончания потока
не окончание потока, а разделитель. Раз-де-ли-тель
Yandex
Объявления
12.11.2013, 13:01     Строки, подсчёт букв
Ответ Создать тему
Опции темы

Текущее время: 23:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru