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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 23.05.2009, 00:33   #1
Qousio
Пользователь
 
Аватар для Qousio
 
Регистрация: 02.05.2009
Сообщений: 27
По умолчанию cout/printf дублирует сообщение дважды, в начале цикла.

Буду краток. Вот функция:
Код:
void Summ() {
	int sum;
	char A[20];
	ClearConsole();
		cout << "Enter variables, that you want to sum\n";
		cout << "Starting variable: ";
cin >> sum;
		while(true) {
cout << sum << " + ";
				cin.getline(A,20);
		sum += atoi(A);
	}
		return;
}
При первом цикле,
Код:
cout << sum << " + ";
Повторяется дважды, т.е. на экране я вижу "sum + sum +". Все последующие циклы отображают всё так как надо, sum +.
Я перепробовал все мыслимые и немыслемые способы это исправить, пробовал заменять cout, printf'ом, пробовал ставить другой цикл, пробовал вместо true ставить флаг, пробовал разделять на два cout'a. При первой итерации цикла, всегда сообщение дублируется. Обьясните как исправить.
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
Qousio вне форума
Старый 23.05.2009, 00:45   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
cin >> sum;
getchar();
while(true)
Там, похоже, в буфере остается символ перевода строки, который и считывается на первой итерации.

Можно еще вместо getchar() вставить _flushall(); (очистка буфера).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 23.05.2009 в 00:48.
Sazary вне форума
Старый 23.05.2009, 13:50   #3
Qousio
Пользователь
 
Аватар для Qousio
 
Регистрация: 02.05.2009
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Код:
cin >> sum;
getchar();
while(true)
Там, похоже, в буфере остается символ перевода строки, который и считывается на первой итерации.

Можно еще вместо getchar() вставить _flushall(); (очистка буфера).
Спасибо, теперь всё работает
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
Qousio вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему выполняется дважды? MAKEDON Помощь студентам 1 17.05.2009 15:06
Переход от цикла к циклу не выходя из цикла (без multithreading) Qousio Общие вопросы C/C++ 2 16.05.2009 09:27
В чём различие printf и cout? kobolok Общие вопросы C/C++ 3 20.11.2008 22:38
unicode и printf Legat Общие вопросы C/C++ 9 06.07.2008 13:41
Как програмно дважды кликнуть в RichEdit? apromix Общие вопросы Delphi 10 23.05.2008 17:09