Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
08.06.2011, 19:28     На ESC не реагирует прога #1
Задача из Лафоре, 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 прога?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kjahert
48 / 48 / 5
Регистрация: 08.04.2011
Сообщений: 124
08.06.2011, 19:34     На ESC не реагирует прога #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();
}
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
08.06.2011, 19:35     На ESC не реагирует прога #3
потому,что switch не передаёт код клавиши.
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
08.06.2011, 19:43  [ТС]     На ESC не реагирует прога #4
Цитата Сообщение от Игорь с++ Посмотреть сообщение
потому,что switch не передаёт код клавиши.
Оо, спасибо.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
08.06.2011, 19:43     На ESC не реагирует прога #5
посуди сам - тебе надо нажать Esc а затем ентер, естественно в h идет только Enter
тебе нужен небуферизированный ввод - в винде функции getch(), getche()

C
1
h=getch();
ах да, #include <conio.h>
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
08.06.2011, 19:55  [ТС]     На ESC не реагирует прога #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 минуту

И вообще что сделать, чтобы получилось аналоговое действие на линуксе?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.06.2011, 20:17     На ESC не реагирует прога #7
В линуксе реализована getch(); в библиотеке ncurses
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
08.06.2011, 20:41  [ТС]     На ESC не реагирует прога #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();
}
И вот, что показывает компилятор(на картинке)
Что делать?
Миниатюры
На ESC не реагирует прога  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2011, 01:18     На ESC не реагирует прога
Еще ссылки по теме:

Выход по нажатию ESC C++
C++ Обработка клавиши Esc
C++ выход по нажатию esc

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

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
09.06.2011, 01:18     На ESC не реагирует прога #9
Цитата Сообщение от Hi4ko Посмотреть сообщение
И вот, что показывает компилятор(на картинке)
Что делать?
Не подключена библиотека при компоновке, соответственно надо подключить. Например ключом -lncurses

Добавлено через 7 минут
а может быть даже -lncursesw, если нужен вывод русского текста в многобайтовой кодировке
Yandex
Объявления
09.06.2011, 01:18     На ESC не реагирует прога
Ответ Создать тему
Опции темы

Текущее время: 14:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru