Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
 Аватар для Alek70694
6 / 6 / 2
Регистрация: 27.10.2012
Сообщений: 264

Как в switch обработать клавишу Esc?

16.02.2016, 17:31. Показов 5172. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
38
39
40
41
42
#include <iostream>
using namespace std;
class tollBooth
{
private:
    unsigned int cars;
    double amount;
public:
    tollBooth () : cars (0), amount (0)
    {}
    void payingCar()
    {
        cars++;
        amount += 0.5;
    }
    void nopayCar()
    {
        cars++;
    }
    void display()
    {
        cout << "Количество машин, оплативших проезд = " << amount / 0.5 << ", неоплативших = " << cars - (amount / 0.5)
            << ", выручка же = " << amount << "." << endl;
    }
};
int main()
{
setlocale(LC_ALL,"RUS");
tollBooth n1;
char ch1, ch2;
cout << "Введите символ ( o - оплатившие водители, n - неоплатившие)" << endl;
cin >> ch1;
switch (ch1)
{
case 'o': n1.payingCar(); break;
case 'n': n1.nopayCar(); break;
case Esc: n1.display(); break;
default: cout << "Неверная команда!" << endl;
}
system("pause");
return 0;
}
Нужно, чтобы по нажатию Esc выполнялся метод вывода. Другие варианты не инетересуют(if и т.д), нужно кокретно в
C++
1
case Esc: n1.display(); break;
исправить, чтобы по нажатию Esc выполнялось нужное действие. Спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2016, 17:31
Ответы с готовыми решениями:

Прерывание цикла, через клавишу Esc
Мне нужно в прервать цикл при нажатии клавиши Esc. Делаю через getch(). Все работает, но есть одна проблема, в каждом прогоне цикла...

Вычислить сумму кодов всех символов, которые в цикле вводятся с клавиатуры до нажатия на клавишу Esc.
Вычислить сумму кодов всех символов, которые в цикле вводятся с клавиатуры до нажатия на клавишу Esc.

Почему cin не смогла обработать ESC, а getche() смогла?
С cin ничего не вышло, а getche распознала. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class tollBooth { ...

6
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
16.02.2016, 17:36
Цитата Сообщение от Alek70694 Посмотреть сообщение
case Esc: n1.display(); break;
Попробуй case 27:
0
 Аватар для Alek70694
6 / 6 / 2
Регистрация: 27.10.2012
Сообщений: 264
16.02.2016, 17:39  [ТС]
Цитата Сообщение от Tulosba Посмотреть сообщение
Попробуй case 27:
уже пробовал, не работает, и пробовал: #27, 27, '27', 'Esc', Esc, Escape, 'Escape'.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
16.02.2016, 17:46
почитай про khbit
0
 Аватар для Alek70694
6 / 6 / 2
Регистрация: 27.10.2012
Сообщений: 264
16.02.2016, 18:15  [ТС]
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
почитай про khbit
Ммм, а без дополнительных манипуляций может есть способ?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
16.02.2016, 18:28
Лучший ответ Сообщение было отмечено Alek70694 как решение

Решение

Alek70694, Я только учу с++ и не понимаю чего вы хотите, но если вам это поможет как и мне когда-то - буду рад)
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
38
39
40
41
42
43
44
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
enum class Keys
{
    NOSET,
 
    LEFT = 75,
    RIGHT = 77,
    TOP = 72,
    DOWN = 80,
    ESC = 27,
    SPACE = 32,
    ENTER = 13,
 
};
void main()
{
    while(true)
    {
        if(_kbhit()) // слушатель нажатия на клаву
        {
            switch(static_cast<Keys>(_getch())) // ждёт нажатия на клаву без Enter после этого
            {
                case Keys::TOP: //вверх
                    cout << "Up" << endl;
                    break;
                case Keys::DOWN: //вниз
                    cout << "Down" << endl;
                    break;
                case Keys::LEFT: //влево 
                    cout << "left" << endl;
                    break;
                case Keys::RIGHT: //вправо
                    cout << "Right" << endl;
                    break;
                case Keys::ESC: //вправо
                    exit( 0 );
                    break;
            }
        }
    }
}
1
 Аватар для Alek70694
6 / 6 / 2
Регистрация: 27.10.2012
Сообщений: 264
16.02.2016, 19:04  [ТС]
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Я только учу с++ и не понимаю чего вы хотите, но если вам это поможет как и мне когда-то - буду рад)
Спасибо за пример, хотел что-то вроде этого, только с Esc, и чтобы после ее нажатия осуществлялся метод класса n1.display() - т.е. вывод на экран суммы, оплативших и неоплативших водителей
C++
1
case '\r': cout << "Выход...\n"; break; // нажатие Enter
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2016, 19:04
Помогаю со студенческими работами здесь

Как обработать клавишу alt+1
Мне нужно обработать клавишу alt+1 в winapi как это можно сделать alt я знаю как обработать а вот как комбинацию обработать?

Как можно обработать событие закрытия диалогового окна по крестику или Esc
У меня одна кнопка ОК, но при нажатии на закрытие диалогового окна выдается такой же ответ как и при нажатии кнопки ОК. Не подскажите как...

Как обработать сообщение, что пользователь нажал на цифровую клавишу?
К примеру приходит сообщение что пользователь нажал на клавишу и она оказалась цифрой , например 1 , какой тогда должна быть проверка ? ...

Switch как обработать неправильный выбор
Добрый день, подскажите пожалуйста как обработать неправильный выбор: Вот листинг: function NewOne { write-host &quot;Поиск...

Встроенный ассемблер в Паскаль. При нажатии на клавишу <Esc> вывести на экран сообщение <Rembo>
Никак не получается сделать это задание : При нажатии на клавишу &lt;Esc&gt; выводить на экран сообщение &lt;Rembo&gt;.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru