Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2012, 09:11   #1
kurilka
 
Регистрация: 11.03.2009
Сообщений: 6
По умолчанию Проблемка с оператором if на Си.

Написал программку:
Код:
#include<stdio.h>
main()
{
	int slova;
	char ch;
	slova=0;
	printf("Напишите фразу:\n");
	while(ch=getchar()!=EOF)
	{
		if(ch==' '&& ch=='\n')
		slova=slova++;
	}
	printf("Слов в предложении %d.\n", slova);
}
В конечном итоге должна считать слова. Но пока пытаюсь её заставить считать "пробел" и "новую строку".
Почему она не считает эти символы?

Последний раз редактировалось ACE Valery; 25.03.2012 в 14:38.
kurilka вне форума Ответить с цитированием
Старый 25.03.2012, 09:52   #2
D@rkD@iver
Форумчанин
 
Регистрация: 28.07.2009
Сообщений: 189
По умолчанию

if(ch==' ' || ch=='\n')
пишу программы для студентов и школьников на Pascal, Delphi, C++, WINAPI, assembler
обучаю программированию на паскале(дистанционно);mail: hruslow@gmail.com
D@rkD@iver вне форума Ответить с цитированием
Старый 25.03.2012, 15:29   #3
Крот
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 57
По умолчанию

Скобок еще не хватает
Код:
while( (ch=getchar()) != EOF )
{
...
}
Крот вне форума Ответить с цитированием
Старый 25.03.2012, 19:25   #4
kurilka
 
Регистрация: 11.03.2009
Сообщений: 6
По умолчанию

Вот большое спасибо! Всё дело было главным образом в скобках! С условием "&&" конечно же результат был бы тоже нулевым! Теперь всё работает!
kurilka вне форума Ответить с цитированием
Старый 25.03.2012, 19:29   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Дам ещё один совет.
Заменить
Код:
slova=slova++;
Вот этим
Код:
slova++;
По сути, это одно и тоже, но второй случай грамотнее и быстрее будет

Ну и ещё тогда
Код:
int slova;
	char ch;
	slova=0;
Первую и третью строку можно сливать воедино:
Код:
int slova = 0;
// ляляляля
Вадим Мошев вне форума Ответить с цитированием
Старый 25.03.2012, 19:47   #6
kurilka
 
Регистрация: 11.03.2009
Сообщений: 6
По умолчанию

Вадим Мошев - да вы правы, так будет правильнее и что ещё главнее короче и быстрее. Т.к ставлю перед собой цель научиться писать программы под AVR нужен короткий и быстрый код.
Но пока пытаюсь делать для себя более понятнее.
Мне было бы понятнее написать так:
Код:
ch=getchar;
while (ch!=EOF)
{
}
Но так как постарался оптимизировать и сократить лапухнулся со скобками. Так что мне нужно пока поменьше сокращать).
kurilka вне форума Ответить с цитированием
Старый 25.03.2012, 19:54   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Так что мне нужно пока поменьше сокращать).
Это правильно. Сначала поработайте так, а потом "исполнять" можно будет...
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача с оператором for Smirnov Паскаль, Turbo Pascal, PascalABC.NET 6 12.02.2012 21:01
участок кода с оператором for tema1234321 Помощь студентам 3 27.12.2011 00:14
проблема с оператором for vakyla Общие вопросы Delphi 9 24.03.2009 20:07