Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
1

Как выйти из цикла по нажатию кнопки?

28.11.2016, 09:55. Показов 5668. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть цикл
C
1
2
3
4
5
6
...
while (1)
{
код
}
...
как можно организовать выход из этого зацикливания по нажатию какой либо конкретной кнопки?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2016, 09:55
Ответы с готовыми решениями:

Как можно выйти из цикла while по нажатию на Enter?
#include <iostream> #include <fstream> #include <string> using namespace std; int main() {...

Старый борланд: как выйти из бесконечного цикла по нажатию заданной клавиши?
Короче нужно сделать прогу которая считает сколько отрицательных,положительных,равных 0 ввел...

Как выйти из цикла по нажатию Esc?
Добрый день. На просторах интернета не могу найти как организовать прерывание цикла по нажатию Esc....

выйти из цикла по нажатию клавиши
Доброго времени суток, необходимо выйти из цикла по нажатию клавиши(esc), приложение Windows Forms,...

11
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
28.11.2016, 10:34 2
Ввести символ в переменную, сравнить её значение с кодом символа.
C++
1
2
3
std::cin >> c;
if (c == 'e')
    break;
2
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
28.11.2016, 11:51  [ТС] 3
Почему то не работает код, ругается вот на это
Цитата Сообщение от MrGluck Посмотреть сообщение
std::cin >> c;
undefined symbol 'std' in function main, что ему (коду) еще надо не знаете?

Добавлено через 1 минуту
Может заголовочный файл какой нибудь добавить?
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
28.11.2016, 11:58 4
Цитата Сообщение от седьмой Посмотреть сообщение
Может заголовочный файл какой нибудь добавить?
C++
1
#include <iostream>
Если Borland, то std:: убрать и
C++
1
#include <iostream.h>
1
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
28.11.2016, 12:19 5
Хмм... А можно ли на чистом С++ сделать так, чтобы программа работала, а не ждала, пока пользователь введет символ?
Вообще, на ум сразу потоки приходят, что-то такое:
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
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <future>
/////////////////////////////////////////////////////////////////////////////////////////
bool exit_from_loop = false;
/////////////////////////////////////////////////////////////////////////////////////////
void check_exit()
{
    unsigned char c{};
    
    std::cin >> c;
    
    if( c == 'e' )
    {
        exit_from_loop = true;
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    auto checker = std::async(std::launch::async, check_exit);
    while( !exit_from_loop )
    {
        // do smth
    }
}
1
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
28.11.2016, 12:27 6
_getch() обеспечивает небуферизированный ввод символа
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
28.11.2016, 14:16  [ТС] 7
Цитата Сообщение от MrGluck Посмотреть сообщение
Если Borland, то std:: убрать и
Turbo C (ms-dos)

Добавлено через 13 минут
Цитата Сообщение от MrGluck Посмотреть сообщение
_getch() обеспечивает небуферизированный ввод символа
c этой функцией я и начинал пробовать код, программа написала, что эту функцию она совсем не знает. Тогда взял функцию getchar() на нее вроде не ругается, но и не отрабатывает так как надо, может код выложить, только он длинный, как то его можно укоротить, что бы он в форме через плюс открывался , а потом обратно закрывался в плюс?
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
28.11.2016, 14:18 8
Цитата Сообщение от седьмой Посмотреть сообщение
программа написала, что эту функцию она совсем не знает.
C++
1
#include <conio.h>
1
GbaLog-
28.11.2016, 14:55
  #9

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
_getch()
Не стандарт же. А я говорю о чистом С++.
Или Вы не мне?

0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
28.11.2016, 15:01 10
Цитата Сообщение от GbaLog- Посмотреть сообщение
Или Вы не мне?

Не по теме:

Вообще я ТСу писал.

0
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
28.11.2016, 20:14 11
Цитата Сообщение от GbaLog- Посмотреть сообщение
А можно ли на чистом С++ сделать так, чтобы программа работала, а не ждала, пока пользователь введет символ?
?

Добавлено через 7 минут
GetAsyncKeyState
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <iostream>
 
int main()
{
    std::cout << "Press 'e' to exit.\n" << std::endl;
    while (true)
    {
        if (GetAsyncKeyState(VkKeyScan('e') & 0xff) & 1) break;
    }
 
    std::cout << "Good bye ..." << std::endl;
 
    for (int i = 5; i > 0; --i, Sleep(1000))
        std::cout << i << std::endl;
 
    return 0;
}

kbhit+getch
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <windows.h>
#include <iostream>
#include <conio.h>
 
int main()
{
    std::cout << "Press 'e' to exit.\n" << std::endl;
    while (true)
    {
        if (_kbhit() && _getch() == 'e') break;
    }
 
    std::cout << "Good bye ..." << std::endl;
 
    for (int i = 5; i > 0; --i, Sleep(1000))
        std::cout << i << std::endl;
 
    return 0;
}
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
28.11.2016, 21:18 12
Цитата Сообщение от dailydose Посмотреть сообщение
?
Не чистый С++! В чистом С++ нет windows.h и conio.h. Оба этих заголовка - непереносимы.
А список стандартных заголовков можно посмотреть здесь: http://en.cppreference.com/w/cpp/header
2
28.11.2016, 21:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2016, 21:18
Помогаю со студенческими работами здесь

Выйти из цикла по нажатию на кнопку
У меня есть цикд do{ ... }while{x&gt;условие} в котором по формуле считается некоторое число и...

Цикл: Выйти в любой момент времени из цикла while нажатием определённой кнопки. Как реализовать?
Необходимо выйти в любой момент времени из цикла while нажатием определённой кнопки. Как...

Остановка цикла по нажатию кнопки
Подскажите, как реализовать остановку цикла (листание картинок), нажав кнопку?

Завершение цикла по нажатию кнопки
Добрый вечер. Хочу сделать, чтобы завершение цикла происходило по действию кнопки( любой). Пусть...

Выход из бесконечного цикла по нажатию кнопки.
Привет всем. как можно выйти из такого цикла по нажатию какой любой кнопки (например Esc) int...

Проход 1 шага цикла по нажатию кнопки
На форме есть кнопка Есть некоторый цикл, допустим for (i = 0; i &lt; 5; i++) { ...


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

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