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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2010, 20:57   #1
Кипящий чайник
Форумчанин
 
Регистрация: 17.12.2009
Сообщений: 101
По умолчанию Лишний прогон цикла

Блажь и чертовщина при считывании и проверке цикла. Должен считаться символ, вывестись соответствующее сообщение и ждать нового ввода символа. Однако после ввода и нажатия Enter цикл прогоняется два раза вместо одного. И никак с этим не справиться.
Что посоветуете?

Код:
#include <cstdlib>
#include <iostream>
#include <string>
#include <locale>

using namespace std;

int main(){
	setlocale(LC_ALL, ".866");

	for(;;){
		system("cls");
		
		wchar_t wch;
		wcin.get(wch);

		switch(wch){
		case 'a': wcout << L"Вы ввели 'a'" << endl; break;
		
		case 'b': wcout << L"Вы ввели 'b'" << endl; break;
		
		case 'c': exit(0); break;
		
		default: wcout << L"Эти символы не предусмотрены." << endl;
		}
		system("PAUSE");
	}

	
	return 0;
}
Кипящий чайник вне форума Ответить с цитированием
Старый 15.09.2010, 21:08   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
#include <cstdlib>
#include <iostream>
#include <string>
#include <locale>

using namespace std;

int main(){
	setlocale(LC_ALL, ".866");

	for(;;){
		system("cls");
		
		wchar_t wch;
		wcin.get(wch);

		switch(wch){
		case 'a': wcout << L"Вы ввели 'a'" << endl; break;
		
		case 'b': wcout << L"Вы ввели 'b'" << endl; break;
		
		case 'c': exit(0); break;
		
		default: wcout << L"Эти символы не предусмотрены." << endl;
		}
		wcin.ignore();
		system("PAUSE");
	}

	
	return 0;
}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 15.09.2010, 21:22   #3
Кипящий чайник
Форумчанин
 
Регистрация: 17.12.2009
Сообщений: 101
По умолчанию

А ларчик просто открывался... Огромное спасибо!
Кипящий чайник вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
getline(wcin, str) - лишний ввод Кипящий чайник Visual C++ 26 24.09.2010 00:51
Как убрать лишний Enter? Diego__ Microsoft Office Word 0 25.02.2010 18:14
при setsid() создается лишний процесс z-s Общие вопросы C/C++ 0 02.10.2009 01:30
Переход от цикла к циклу не выходя из цикла (без multithreading) Qousio Общие вопросы C/C++ 2 16.05.2009 09:27
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 14:10