Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
igorperzh
3 / 3 / 0
Регистрация: 30.05.2011
Сообщений: 41
1

Некорректная работа ф-ции getch() в цикле

11.06.2011, 03:23. Просмотров 1075. Ответов 7
Метки нет (Все метки)

C++
1
2
3
4
5
while (iKey != 27)
    {
        iKey = getch();
        cout << "qwer";
    }
Не могу понять почему после нажатия любой клавиши(понятно кроме Esc) программа печатает "qwerqwer"... Подскажите в чем дело и как это исправить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2011, 03:23
Ответы с готовыми решениями:

Подскажите функцию, аналогичную ф-ции getch()
Так как функция getch() считывает информацию до символа новой строки, мне нужна...

Некорректная работа команды continue в цикле при проверке корректности введенных данных
Доброго времени суток, уважаемые форумчане. Есть программа для определения...

Аналог getch или русские буквы в getch
Здравствуйте, уважаемые господа. Существуют ли какие-нибудь аналоги getch ()...

Работа с while, kbhit() и getch()
Здравствуйте! Подскажите пожалуйста, Задача, сделать точку в консоли, которая...

Странная работа getch
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main()...

7
doleo
6 / 6 / 2
Регистрация: 22.02.2010
Сообщений: 13
11.06.2011, 03:32 2
1-й проход цикла:
Значение переменной iKey еще пусто (!=27) - считываем символ, печатаем "qwer"
2-й проход цикла:
Значение переменной iKey = считанному в первой итерации символу

Вот так работает ваша программа
0
igorperzh
3 / 3 / 0
Регистрация: 30.05.2011
Сообщений: 41
11.06.2011, 11:59  [ТС] 3
Цитата Сообщение от doleo Посмотреть сообщение
1-й проход цикла:
Значение переменной iKey еще пусто (!=27) - считываем символ, печатаем "qwer"
2-й проход цикла:
Значение переменной iKey = считанному в первой итерации символу

Вот так работает ваша программа
не совсем понятно, почему печатает "qwerqwer"
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.06.2011, 12:03 4
Потому, что два раза проходит цикл. Хотите, чтобы проходило один раз, используйте цикл с пост-условием, то бишь do ... while( ... );
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.06.2011, 12:08 5
Так попробуйте
C++
1
2
while (getch()!=27)
    cout << "qwer";
Протестировать возможности не имею.
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.06.2011, 12:16 6
diagon, по идее, если первым же символом нажмут 27-й, то вообще ничего не будет выведено.
0
igorperzh
3 / 3 / 0
Регистрация: 30.05.2011
Сообщений: 41
11.06.2011, 12:37  [ТС] 7
Цитата Сообщение от talis Посмотреть сообщение
diagon, по идее, если первым же символом нажмут 27-й, то вообще ничего не будет выведено.
если первым нажать Esc будет выведено qwer

Добавлено через 1 минуту
Мне вот что не понятно, когда нажимаю клавиши: стрелки, page up, page down, delete, insert, home, end печатаются сразу два qwer, при нажатии на др. кнопки все работает отлично
0
train-killer
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 3
11.06.2011, 12:59 8
Цитата Сообщение от igorperzh Посмотреть сообщение
Мне вот что не понятно, когда нажимаю клавиши: стрелки, page up, page down, delete, insert, home, end печатаются сразу два qwer, при нажатии на др. кнопки все работает отлично
Для данных клавиш, и для некоторых других, при нажатии вводится 2-байтное значение.
0
11.06.2011, 12:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2011, 12:59

Передача ф-ции как параметра другой ф-ции
struct pupil{ char surname; int school; int answer; int...

Некорректная работа программы
Суть программы в том, что есть записанные в файле слова с ответами (разделены...

Некорректная работа rand()
В общем вот кусок кода и картинкой его реализация: #include &lt;stdio.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru