![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 06.12.2009
Сообщений: 380
|
![]()
Добрый день.
Помогите разобраться, вот две программы, они почти одинаковы, но должны различаться только тем, что при вводе символа в первой программе Enter жать не надо (т.к. используется getche()), а во второй без этого не обойтись (т.к. используется cin <<) Это я понял из описания функции getche() Но не все так просто, в первой программе, после срабатывания оператора getche() должен выполниться if, но нет, программа настойчиво требует ввод символов (как будто getche зациклился), и только когда жмешь Enter, одним разом выводится все, что должно было вывестись раньше. Код:
Код:
![]() Последний раз редактировалось Stilet; 26.06.2011 в 18:14. |
![]() |
![]() |
![]() |
#2 |
Профессионал
Пользователь
Регистрация: 25.05.2011
Сообщений: 91
|
![]()
не понятна суть проблемы.
Запустил 1-ую программу на исполнение. Если нажимаешь любой символ, кроме '\r' и 'q', выводятся считанный функцией getche символ + добавляются "12", т.е. оператор if здесь работает. А как должно быть?
Помог? Будь человеком - жми на весы слева!
|
![]() |
![]() |
![]() |
#3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Могу лишь догадываться, но может быть ситуацию исправит сброс потока вывода, после каждой операции вывода?
Код:
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 06.12.2009
Сообщений: 380
|
![]() Цитата:
![]() После захода в цикл While в первой программе мы просто вводим символ, а во второй вводим и жмем Enter, далее в первой программе идет оператор if, но COUT не срабатывает, точнее как я понимаю не заходит даже в if, можно вводить еще символы, а когда нажмем Enter, в зависимости от количества введенных символов выскочит примерно такая картина: qrtywewe121212 qrty-это введенные мной символы А во второй программе картина такая: qwewer12t12y12 |
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 06.12.2009
Сообщений: 380
|
![]() |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]() |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 06.12.2009
Сообщений: 380
|
![]() |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Потому что при выводе, информация сначала попадает в буфер, а потом уже на экран. Манипуляторы flush и endl производят сброс буфера потока вывода, форсируя вывод информации на экран.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Аналог getche() в Linux | tim88 | Общие вопросы C/C++ | 4 | 13.01.2010 05:37 |
Использование метода getche() | Golovastik | Общие вопросы C/C++ | 4 | 17.07.2009 20:22 |