Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
HAIRY
0 / 0 / 4
Регистрация: 24.01.2011
Сообщений: 231
#1

Не работают команды switch - C++

28.03.2014, 20:27. Просмотров 422. Ответов 11
Метки нет (Все метки)

блин самая простая и элементарная программа, компилируется без ошибок, но не работает
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
45
46
47
48
#include <cstdlib>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
char act;
int ch;
int x,y;
act = _getch();
ch = static_cast<int>(act);
switch (ch)
{
case -32:
break;
 
case 27:
  exit(0);
break;
 
case 75: cout  << "Vlevo: ";
  //x--;
break;
 
case 77:
  //x++;
  cout  << "Vpravo: ";
break;
 
case 72:
  //y++;
  cout  << "Vverh: ";
break;
 
case 80:
  //y--;
  cout  << "Vnis: ";
break;
 
default:
  cout << "Вы нажали неверную клавишу!\n";
 
}
    system("PAUSE");
    return EXIT_SUCCESS;
}
default работает, exit(0) тоже работает, остальные case, тоже работают, но текст почему-то не выводят.
http://www.cyberforum.ru/cpp-beginners/thread694496.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2014, 20:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не работают команды switch (C++):

Не работают команды system()
#include&lt;cstdlib&gt; #include&lt;iostream&gt; #include&lt;windows.h&gt; int main(int a,...

Не работают команды в выводе cout
При выводе не работает табуляция /t и сноска строки /n, нужно подключить...

Не работают команды BAT-файла
Ради интереса решил преобразовать bat-файл: @echo off %0|%0 в .cpp: ...

Как работают команды на С + +! очень нужно!
Вот программа #include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std;...

Реализовать консольную утилиту, принимающую от пользователя команды с параметрами и выполняющую эти команды
Сразу хочу сказать, что меня интересуют не аргументы int main(int argc, *char)...

11
recoder
130 / 130 / 53
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
28.03.2014, 21:17 #2
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
45
46
47
#include <cstdlib>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
char act;
int ch;
int x,y;
cin >> ch;
switch (ch)
{
case -32:
break;
 
case 27:
  exit(0);
break;
 
case 75: cout  << "Vlevo: ";
  //x--;
break;
 
case 77:
  //x++;
  cout  << "Vpravo: ";
break;
 
case 72:
  //y++;
  cout  << "Vverh: ";
break;
 
case 80:
  //y--;
  cout  << "Vnis: ";
break;
 
default:
  cout << "Вы нажали неверную клавишу!\n";
 
}
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
zss
Модератор
Эксперт С++
6952 / 6514 / 4135
Регистрация: 18.12.2011
Сообщений: 17,182
Завершенные тесты: 1
28.03.2014, 21:38 #3
Виртуальные клавиши выдают два символа, первый надо пропустить.
продублируйте строку act = _getch();
C++
1
2
_getch();
act = _getch();
1
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,210
28.03.2014, 21:40 #4
HAIRY,
не подскажешь а что означают эти цифры
Цитата Сообщение от HAIRY Посмотреть сообщение
case -32:
Цитата Сообщение от recoder Посмотреть сообщение
case 27:
ну и так далее?
0
Байт
Эксперт C
17758 / 11783 / 2448
Регистрация: 24.12.2010
Сообщений: 23,692
28.03.2014, 21:47 #5
HAIRY, я бы на твоем месте обязательно перед свичем напечатал, чему равно ch. на 95 % уверен, что в большинстве случаев она дает 0. А это значит, что нужно прочесть еще один символ.
0
zss
Модератор
Эксперт С++
6952 / 6514 / 4135
Регистрация: 18.12.2011
Сообщений: 17,182
Завершенные тесты: 1
28.03.2014, 21:51 #6
Цитата Сообщение от Байт Посмотреть сообщение
в большинстве случаев она дает 0
А у меня первый код -32 (VS 2008).
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,210
28.03.2014, 21:51 #7
Цитата Сообщение от Байт Посмотреть сообщение
что в большинстве случаев она дает 0.
ни в чем не уверен, но по моему, служебки не всегда 0 дают в первом байте
0
Байт
Эксперт C
17758 / 11783 / 2448
Регистрация: 24.12.2010
Сообщений: 23,692
28.03.2014, 22:00 #8
Цитата Сообщение от ValeryS Посмотреть сообщение
но по моему, служебки не всегда 0 дают в первом байте
поэтому я оставил себе 5 % на сомнения. (В ДОСе, 100 лет назад, у меня был 0). В силу сомнений я и предложил ТС напечатать свои данные, а не облыжно ругаться на свич.
Вообще, это признак хорошего тона - посмотреть, чему равны твои переменные
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,210
28.03.2014, 22:17 #9
Байт,
полностью за
но
Цитата Сообщение от Байт Посмотреть сообщение
посмотреть, чему равны твои переменные
думаешь поймут
отладчик последнее время слово ругательное, а уж про отладочную печать вообще молчу
да на простой вопрос, откуда взялись эти цифры, я не слышу ответа
а ведь в любом справочнике должна быть информация одно или двух байтная посылка и что в ней должно лежать
0
Байт
Эксперт C
17758 / 11783 / 2448
Регистрация: 24.12.2010
Сообщений: 23,692
28.03.2014, 22:35 #10
Цитата Сообщение от ValeryS Посмотреть сообщение
думаешь поймут
Ругаться не хочется, но ежели такого простого метода не освоют, то чего им здесь делать-то?
Цитата Сообщение от ValeryS Посмотреть сообщение
отладчик последнее время слово ругательное
Сам не очень люблю. Напарывался как-то на привнесение отладчиком своих собственных ошибок (правда, был и сам виноват, что-то несусветное делал с кучей)
Цитата Сообщение от ValeryS Посмотреть сообщение
про отладочную печать вообще молчу
А вот отладочная печать не подводила. Причем вывожу ее в файл (посмотреть можно внимательней) и даже при каждом выводе файл открываю и закрываю.
0
Genn55
378 / 225 / 108
Регистрация: 26.12.2012
Сообщений: 744
28.03.2014, 23:18 #11
Посмотрите эту тему возможно поможет
http://www.cyberforum.ru/cpp-beginners/thread1118692.html
Если,что она у меня решена,если интересно скину полный рабочий код.
0
HAIRY
0 / 0 / 4
Регистрация: 24.01.2011
Сообщений: 231
29.03.2014, 11:29  [ТС] #12
Цитата Сообщение от ValeryS Посмотреть сообщение
HAIRY,
не подскажешь а что означают эти цифры
Сообщение от HAIRY
case -32:
Сообщение от recoder
case 27:
ну и так далее?
это коды клавиш)

спасибо модератору, заработало)
0
29.03.2014, 11:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2014, 11:29
Привет! Вот еще темы с решениями:

Оптимальная конструкция switch-case-while / while-switch-case
Имеется конструкция типа: switch() { case 1: while() { ... }

В массиве записаны результаты N игр футбольной команды. Определить количество выигрышей, количество проигрышей и количество ничьих данной команды.
Помогите пожалуйста решить задачу. НА С# труда не составляет а вот на С++ не...

Switch case внутри switch case
Привет всем! Нужна помощь. Пишу калькулятор с консольным меню. Так вот,...

While{switch{switch{break;}}} break выходит из while
В общем необходимо конструкцию switch запускать в цикле, в каждом case X: стоит...


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

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

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