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

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

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

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

Добавлено через 8 минут
А еще лучше, чтобы для продолжения цикла нажать enter, а для выхода из него esc и так после каждой итерации.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2013, 13:54
Ответы с готовыми решениями:

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

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

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

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

6
Заблокирован
Автор FAQ
22.06.2013, 14:18 2
Цитата Сообщение от 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  [ТС] 3
@-=ЮрА=-, спасибо, но по-моему довольно сложный для понимания вариант
Не понимаю насчет кодов клавиш - с одной стороны обозначено ParseVKKey(int vKey), а тут уже ParseVKKey(VK_ESCAPE)

Добавлено через 1 минуту
И нужно еще каждый раз очищать поток ввода? cin.clear();
0
Заблокирован
Автор FAQ
22.06.2013, 14:39 4
Цитата Сообщение от Wladius Посмотреть сообщение
а тут уже ParseVKKey(VK_ESCAPE)
отнють не сложный
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
bool ParseVKKey(int vKey);
- это объявление функции, а это уже использование в программе
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ParseVKKey(VK_ESCAPE);
VK_ESCAPE/VK_RETURN это известные константы задефайненные в WinUser.h
Миниатюры
Выход из цикла по нажатию определенной клавиши  
1
Заблокирован
Автор FAQ
22.06.2013, 14:41 5
Цитата Сообщение от Wladius Посмотреть сообщение
И нужно еще каждый раз очищать поток ввода? cin.clear();
- да если юзер вводил что то в цикле ожидания нажатия Enter, то произойдёт проскок на столько итерайций сколько символов было введено. @Wladius, пробегись дебагером лучше - это будет лучше любых пояснений. На счёт простоты кода - проще сомневаюсь что возможно сделать не прибегая к getch - в коде всего 1 функция, которая использует 1 стандартную функцию
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
GetAsyncKeyState(vKey)
- куда уж проще и меньше
2
12 / 7 / 3
Регистрация: 06.01.2013
Сообщений: 127
22.06.2013, 14:48  [ТС] 6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
возможно сделать не прибегая к getch
Спасибо, а как подобное делается при помощи getсh ?
0
Заблокирован
Автор FAQ
22.06.2013, 15:39 7
Цитата Сообщение от 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
22.06.2013, 15:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2013, 15:39
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru