Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
#1

На ESC не реагирует прога - C++

08.06.2011, 19:28. Просмотров 1044. Ответов 8
Метки нет (Все метки)

Задача из Лафоре, 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
43
#include <iostream>
#include <iomanip>
using namespace std;
const char ESC=27;
class tollBooth
    {
unsigned int avtonum;
double monsum;
public:
tollBooth() : avtonum(0) , monsum(0.0)
{}
void payingCar()
{
avtonum++;monsum+=0.5;
}
void nopayingCar()
{
avtonum++;
}
void showscreen() const
{
cout<<"кол-во водителей"<<setw(4)<<avtonum;
cout<<endl;
cout<<"кол-во заработанных денег,$"<<setw(4)<<monsum;
cout<<endl;
}
    };
int main()
    {
    tollBooth lol;
    char h;
    cout<<"Вы какой водитель? Нажмите 1, если вы платите за проезд, нажмите 2, если вы лох и еврей. Также можно нажать ESC для выхода."<<endl;
    do
    {
           cin>>h;
    switch(h)
       {
    case '1' : lol.payingCar();
    case '2' : lol.nopayingCar();
       }
    }while(h!=ESC);
lol.showscreen();
}
Почему не реагирует на ESC прога?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2011, 19:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос На ESC не реагирует прога (C++):

надо что то добавить!!прога просто выводит список групп,учеников и первых 3 оценок.надо чтобы прога в конце показывала по убыванию средего балла - C++
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; main() {int t,o1,o2,o3; char...

Esc-последовательности - C++
Добрый день!Столкнулся с такой проблемой...Не знаю как в консоли с помощью управляющих последовательностей перевести каретку на строку...

Выход по ESC - C++
Приветствую вас уважаемые &quot;чатлане&quot;! .Пишет вам &quot;пацак&quot;. Я начал с Borland C++ 3.1. Наверное все очень просто на самом деле, но как и у...

Прерывание программы по ESC C++ - C++
доброй ночи Добрался до такой вот темы Пытаюсь реализовать перехват нажатия клавиши ESC и SPACE в консольном режиме Но программа не...

Игнорирование Enter/Esc - C++
Здравствуйте, форумчане. У меня встаёт вопрос! :) Вообщем есть программа, нулевая. #include &quot;stdafx.h&quot; int _tmain(int...

Выход по нажатию ESC - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; float sum(); float razn(); float del(); float proizv(); float...

8
kjahert
49 / 49 / 5
Регистрация: 08.04.2011
Сообщений: 124
08.06.2011, 19:34 #2
В bc 3.1 реагирует так:
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.h>
#include <iomanip.h>
#include <conio.h>
const char ESC=27;
class tollBooth
    {
unsigned int avtonum;
double monsum;
public:
tollBooth() : avtonum(0) , monsum(0.0)
{}
void payingCar()
{
avtonum++;monsum+=0.5;
}
void nopayingCar()
{
avtonum++;
}
void showscreen() const
{
cout<<"кол-во водителей"<<setw(4)<<avtonum;
cout<<endl;
cout<<"кол-во заработанных денег,$"<<setw(4)<<monsum;
cout<<endl;
}
    };
void main()
    {clrscr();
    tollBooth lol;
    char h;
    cout<<"Вы какой водитель? Нажмите 1, если вы платите за проезд, нажмите 2, если вы лох и еврей. Также можно нажать ESC для выхода."<<endl;
    do
    {
           cin>>h;
    switch(h)
       {
    case '1' : lol.payingCar();
    case '2' : lol.nopayingCar();
       }
    }while(!ESC);
lol.showscreen();
getch();
}
1
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
08.06.2011, 19:35 #3
потому,что switch не передаёт код клавиши.
1
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
08.06.2011, 19:43  [ТС] #4
Цитата Сообщение от Игорь с++ Посмотреть сообщение
потому,что switch не передаёт код клавиши.
Оо, спасибо.
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
08.06.2011, 19:43 #5
посуди сам - тебе надо нажать Esc а затем ентер, естественно в h идет только Enter
тебе нужен небуферизированный ввод - в винде функции getch(), getche()

C
1
h=getch();
ах да, #include <conio.h>
0
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
08.06.2011, 19:55  [ТС] #6
А вот на винде работает, а на линуксе нет. На qtCreator не работает ESC. Это из-за IDE или как?

Добавлено через 55 секунд
Цитата Сообщение от OstapBender Посмотреть сообщение
посуди сам - тебе надо нажать Esc а затем ентер, естественно в h идет только Enter
тебе нужен небуферизированный ввод - в винде функции getch(), getche()

C
1
h=getch();
ах да, #include <conio.h>
А если conio.h нету в библиотеке? А куда его вставлять?(если QTcreator и Ubuntu 11.04)?

Добавлено через 1 минуту

И вообще что сделать, чтобы получилось аналоговое действие на линуксе?
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.06.2011, 20:17 #7
В линуксе реализована getch(); в библиотеке ncurses
0
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
08.06.2011, 20:41  [ТС] #8
Цитата Сообщение от diagon Посмотреть сообщение
В линуксе реализована getch(); в библиотеке ncurses
Вот код:
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 <iomanip>
#include <ncurses.h>
using namespace std;
const char ESC=27;
class tollBooth
    {
unsigned int avtonum;
double monsum;
public:
tollBooth() : avtonum(0) , monsum(0.0)
{}
void payingCar()
{
avtonum++;monsum+=0.5;
}
void nopayingCar()
{
avtonum++;
}
void showscreen() const
{
cout<<"кол-во водителей"<<setw(4)<<avtonum;
cout<<endl;
cout<<"кол-во заработанных денег,$"<<setw(4)<<monsum;
cout<<endl;
}
    };
int main()
    {
    tollBooth lol;
    char h;
    cout<<"Вы какой водитель? Нажмите 1, если вы платите за проезд, нажмите 2, если вы лох и еврей. Также можно нажать ESC для выхода."<<endl;
    do
    {
       h=getch();
    switch(h)
       {
    case '1' : lol.payingCar();
    case '2' : lol.nopayingCar();
       }
    }while(h=!ESC);
lol.showscreen();
}
И вот, что показывает компилятор(на картинке)
Что делать?
0
Миниатюры
На ESC не реагирует прога  
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
09.06.2011, 01:18 #9
Цитата Сообщение от Hi4ko Посмотреть сообщение
И вот, что показывает компилятор(на картинке)
Что делать?
Не подключена библиотека при компоновке, соответственно надо подключить. Например ключом -lncurses

Добавлено через 7 минут
а может быть даже -lncursesw, если нужен вывод русского текста в многобайтовой кодировке
1
09.06.2011, 01:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2011, 01:18
Привет! Вот еще темы с ответами:

Обработка клавиши Esc - C++
Не могу найти как обработать клавишу Esc. Цикл повторяется пока не будет нажата эта клавиша, после нажатия выводятся данные о поле...

Закрытие программы клавишей Esc - C++
Здравствуйте! Хотел бы узнать какой код нужно написать чтобы закрыть программу нажатием клавиши ESC (Видел другие темы(не только на...

Отмена ввода по нажатию ESC - C++
Как отменить все введенное и выйти если пользователь нажал ESC? (желательно с использованием консольного буфера ввода) Добавлено через...

виход из проги клавишей Esc - C++
Как на С++ зделать чтоб из программы виходило при нажатии Esc,что прописывать ?


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

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

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