Jump to content
СофтФорум - всё о компьютерах и не только

Строки С++


Recommended Posts

Доброго времени суток. Возникла проблема в программе (подсчет количества слов в строке), если в строку записать более 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;

}

Link to comment
Share on other sites

little_greg:

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

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

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...