Страница 2 из 2
Re: Подсчет слов
Добавлено: 08 дек 2010, 16:18
JeyKip
Albor писал(а): Функция подсчёта будет всего в несколько строк, с одним проходом по массиву. Если есть желание, попробуйте реализовать. Вы удивитесь, на сколько всё просто. Удачи!
с символами то ясно...я делал проверку так, что счетчик слов увеличится только тогда, когда текущий символ - буква, а следующий - разделитель...и проход по циклу у меня также один...правда, в 2 этапа..: сначала я обошел все символы-разделители в начале строки, а потом с того места, где начались буквы, поставил условие, описанное ранее...а другие символы-разделители можно добавить в проверку по желанию...
Re: Подсчет слов
Добавлено: 08 дек 2010, 17:02
Albor
JeyKip, ваш вариант даст ошибку, если в строке встретятся символы '*', '+' или какие другие, не перечисленные в условиях. Такой "перебор" возможных разделителей усложняет код и велика вероятность ошибки. Вот, например, как можно реализовать подсчёт:
Код: Выделить всё
#include<string>
int count_word( char * pStr )
{
int cnt(0);
bool bInWord(false);
while (*pStr!='\0')
bInWord=isalpha(*pStr++)?true:bInWord?++cnt,false:bInWord;
return bInWord?cnt+1:cnt;
}
Re: Подсчет слов
Добавлено: 09 дек 2010, 14:36
JeyKip
конечно, если необходимо исключить ВСЕ символы-разделители, то проще проверить буква ли это...согласен
