Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/56: Рейтинг темы: голосов - 56, средняя оценка - 4.89
12 / 7 / 3
Регистрация: 06.01.2013
Сообщений: 127

Выход из цикла по нажатию определенной клавиши

22.06.2013, 13:54. Показов 10622. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим у меня есть какой-нибудь while(1) и мне нужно, чтобы при нажатии, например, esc или enter цикл завершался, как такое сделать?

Добавлено через 8 минут
А еще лучше, чтобы для продолжения цикла нажать enter, а для выхода из него esc и так после каждой итерации.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2013, 13:54
Ответы с готовыми решениями:

Выход из цикла после нажатия определенной клавиши
Здравствуйте, собственно, хотел узнать, как мне выйти из цикла, нажав определенную клавишу? Обычный цикл по заполнению массива

Выход из цикла по нажатию клавиши
Возможно ли этот кусок кода приспособить к выходу из цикла не по воду -1 в m а по вводу допустим 'x'? Этот кусок кода работает в цикле и...

Выход из цикла по нажатию клавиши
В очередной раз поднимаю эту тему. Задача такая, ходить по циклу бесконечное количество раз и завершить его после нажатия Esc. ...

6
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
22.06.2013, 14:18
Цитата Сообщение от Wladius Посмотреть сообщение
Допустим у меня есть какой-нибудь while(1) и мне нужно, чтобы при нажатии, например, esc или enter цикл завершался, как такое сделать?
Добавлено через 8 минут
А еще лучше, чтобы для продолжения цикла нажать enter, а для выхода из него esc и так после каждой итерации.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <windows.h>
#include <iostream>
using namespace std;
 
bool ParseVKKey(int vKey);
 
int main()
{
    bool bWait = false;
    bool bStop = false;
    for(int i  = 0; i < INT_MAX && !bStop; i++)
    {
        cout<<"\nITERATION # "<<i + 1<<endl;
        bWait = true;
        while(bWait && !bStop)
        {
            cout<<"\rPRESS Enter for next iteration ESC - for exit";
            bStop =  ParseVKKey(VK_ESCAPE);
            bWait = !ParseVKKey(VK_RETURN);
            cin.sync();
            cin.clear();
            Sleep(100);
        }
        
        
    }
    return 0;
}
 
bool ParseVKKey(int vKey)
{
    bool bPress = false;
    if(GetAsyncKeyState(vKey))
    if(GetAsyncKeyState(vKey))
        bPress = true;
    return bPress;
}
Миниатюры
Выход из цикла по нажатию определенной клавиши  
2
12 / 7 / 3
Регистрация: 06.01.2013
Сообщений: 127
22.06.2013, 14:37  [ТС]
@-=ЮрА=-, спасибо, но по-моему довольно сложный для понимания вариант
Не понимаю насчет кодов клавиш - с одной стороны обозначено ParseVKKey(int vKey), а тут уже ParseVKKey(VK_ESCAPE)

Добавлено через 1 минуту
И нужно еще каждый раз очищать поток ввода? cin.clear();
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
22.06.2013, 14:39
Цитата Сообщение от Wladius Посмотреть сообщение
а тут уже ParseVKKey(VK_ESCAPE)
отнють не сложный
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
bool ParseVKKey(int vKey);
- это объявление функции, а это уже использование в программе
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ParseVKKey(VK_ESCAPE);
VK_ESCAPE/VK_RETURN это известные константы задефайненные в WinUser.h
Миниатюры
Выход из цикла по нажатию определенной клавиши  
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
22.06.2013, 14:41
Цитата Сообщение от Wladius Посмотреть сообщение
И нужно еще каждый раз очищать поток ввода? cin.clear();
- да если юзер вводил что то в цикле ожидания нажатия Enter, то произойдёт проскок на столько итерайций сколько символов было введено. @Wladius, пробегись дебагером лучше - это будет лучше любых пояснений. На счёт простоты кода - проще сомневаюсь что возможно сделать не прибегая к getch - в коде всего 1 функция, которая использует 1 стандартную функцию
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
GetAsyncKeyState(vKey)
- куда уж проще и меньше
2
12 / 7 / 3
Регистрация: 06.01.2013
Сообщений: 127
22.06.2013, 14:48  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
возможно сделать не прибегая к getch
Спасибо, а как подобное делается при помощи getсh ?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
22.06.2013, 15:39
Цитата Сообщение от Wladius Посмотреть сообщение
Спасибо, а как подобное делается при помощи getсh ?
- вот так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <conio.h>
 
int main()
{
    int i;
    int iWait = 0;
    int iStop = 0;
    for(i  = 0; !iStop; i++)
    {
        printf("\nITERATION # %d\n", i + 1);
        iWait = true;
        while(iWait && !iStop)
        {
            printf("\rPRESS Enter for next iteration ESC - for exit");
            switch(getch())
            {
            case 13:
                iWait = 0;
                break;
            case 27:
                iStop = 1;
                break;
            }
        }
    }
    return 0;
}
Миниатюры
Выход из цикла по нажатию определенной клавиши  
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.06.2013, 15:39
Помогаю со студенческими работами здесь

Выход из цикла по нажатию заданной клавиши
Здравствуйте! Подскажите пожалуйста, как реализовать выход из цикла (repeat until) путем нажатия соотвествующей клавиши, которую мы сами...

Выход из бесконечного цикла по нажатию клавиши
как выйти из бесконечного цикла по нажатию клавиши? begin: ..... jmp begin 8h ждет нажатия и получает введенный символ...а...

Выход из цикла при нажатии определенной клавиши
Подскажите, пожалуйста, как написать цикл с выходом из него при нажатии определенной клавиши ... Цикл пока на будет нажата клавиша Q...

Выход из цикла по нажатию клавиши (Аналог getkeystate)
Нужно выйти из цикла по сигналу от клавиатуры, getchar() не подходит, так как каждый раз ожидает ввода. Есть ли какой-нибудь аналог...

Выход по нажатию клавиши
Здравствуйте! Как выйти из цикла по нажатию клавиши в python 3.4.1.? Знаю что подобные темы были, но решение в них так и не нашел. Да и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru