Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Строки С++


Рекомендуемые сообщения

Доброго времени суток. Возникла проблема в программе (подсчет количества слов в строке), если в строку записать более 8 слов, то результат выдается неверный. Помогите разобраться.

#include <cstdlib>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])

{

char szString[256];

int nCount = 0;

gets(szString);

//cin.getline(szString, 128);

for (int i = 0; szString != '\n'; i++)

{

if (szString == ' ')

{

nCount++;

}

}

cout << "There are " << nCount+1 <<" words in this string\n";

system("PAUSE");

return EXIT_SUCCESS;

}

Ссылка на комментарий
Поделиться на другие сайты

little_greg:

Со священным в буддизме числом 8 это никак не связано. Просто строка на экране и строка в представлении C - разные вещи.

Строка на экране кончается переводом строки, который выдается клавишей Enter, в этот момент срабатывает функция gets и записывает строку в массив szString, но символ перевода строки при этом заменяется функцией gets на символ окончания строки в C, то есть на символ с кодом 0. Поэтому читать этот массив символов до появления символа перевода строки бессмысленно - если он и попадется, то за пределами введенной строки. Так что надо заменить заголовок цикла for (int i = 0; szString != '\n'; i++) на, например, for (int i = 0; szString; i++)

Ну и, кроме того, в этой программе считается число пробелов, а не слов. На самом деле между словами может стоять несколько пробелов или другие знаки, поэтому правильнее было бы считать слова, например, по концам слов, то есть по количеству пар <символ, который может входит в слова><символ, который не может входить в слова>. Но это, конечно, программируется немного сложнее.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...