Задать вопрос
OccamaRazor
@OccamaRazor

Подкорректируйте, где не прав, программа выдаёт на 1 значение меньше, почему?

Программа должна подсчитывать количество слов, одна при вводе "simple example programm" возвращает кол-во слов: 2. При любых других комбинациях всегда меньше на 1.
char word;
	int count = 0;
	int block = true;
	while ((word = getchar()) != EOF)
	{
		if ( block == false && ((word >= 'A' && word <= 'Z') || (word >= 'a' && word <= 'z')))
		{
			block = false;
			count += 1;
		}
		if (word == ' ' || word == '\n')
			block = false;
		else
		{
			block = true;
			count += 0;
		}
	}
	printf("WORDS:%d\n", count);
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
GavriKos
@GavriKos
int block = true; - вот это поменяйте на false. Вы пропускаете не последнее, а первое слово. Ну bool тип все таки лучше ;-)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
NeiroNx
@NeiroNx
Программист
У вас последнее слово не считается - потому что нет условия соотвествующего. Если block == true && word == EOF то добавлять 1.
Ответ написан
Комментировать
maaGames
@maaGames
Погроммирую программы
Завершайте файл переводом строки, после последнего слова и будет считать правильно. Сейчас ошибка в алкгоритме.

count += 0; - вот это вообще жёстко.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы