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

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

Войти
Регистрация
Восстановить пароль
 
Igor337
0 / 0 / 0
Регистрация: 28.01.2011
Сообщений: 60
#1

Запускается консоль, а нужный действий не выполняет - C++

29.03.2012, 18:59. Просмотров 425. Ответов 8
Метки нет (Все метки)

Здравствуйте. Не работает программа. Запускается консоль, а нужный действий не выполняет. Вот сам код
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
49
50
51
52
53
#include <conio.h>
#include <iostream>
#include <clocale>
 
using namespace std;
 
int main()
{
    setlocale (LC_CTYPE, "Russian");
   char act;
   int ch;
   while (1)
   {
     act=_getch();
ch = static_cast<int>(act);
   if (ch=-32)
   {
   }
   else
       if (ch=27)
       {
           exit(0);
           break;
       }
       else 
           if (ch=75)
       {
           cout << "Нажата клавиша Влево\n";
       }
       else
           if (ch=77)
           {
               cout << "Нажата клавиша Вправо\n";
           }
           else 
               if (ch=72)
           {
                cout << "Нажата клавиша Вверх\n";
           }
               else 
                   if (ch=80)
                   {
                        cout << "Нажата клавиша Вниз\n";
                   }
                   else
                   {
                       cout << "Вы нажали неверную клавишу\n";
                   }
   }
 
_getch;
    return 0;
}
Где тут может быть ошибка? Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2012, 18:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запускается консоль, а нужный действий не выполняет (C++):

Как заранее прописать нужный шрифт в консоль? - C++
Например мне нужно, чтобы шрифт в консоле по умолчанию устанавливался в Lucida Console. Буду благодарен:)

Консоль не запускается из-за отсутствия DLL - C++
Вот что выдал мне компьютер после попытки запустить мою консоль. Как это исправить? Почему консоль не запускается? Может быть, дело в том,...

запускается консоль и ничего не выводит - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; using namespace std; int func(int **mas, int i, int j, int n, int...

Консоль даже не запускается, и + "выражение должно иметь тип указателя на обьект" - C++
выражение должно иметь тип указателя на обьект. код: void showArr(int massivInna, int N) { for (int i=0; i&lt;(N+15); i++) { ...

Программа запускается, но не выполняет никаких действий - Assembler
есть текст программы набранный с ученика (проверял его правильность неоднократно). Что программа делает я понимаю. после получения com...

Timer отсчитывает время, но не выполняет действий - Delphi
Здравствуйте, проверяю в таймере условие, и если это условие выполняется, то все таймеры должны остановиться, если нет - то на форме...

8
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
29.03.2012, 19:01 #2
надо писать if(ch == ...)
1
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
29.03.2012, 19:04 #3
не if (ch=72) А if(ch==72)
и так везде!

Добавлено через 1 минуту
и всю ету конструкцию удобно делать через
switch(...)
{
case 1....
case 2....
case 3...
default: ...
}
1
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
29.03.2012, 19:05 #4
Цитата Сообщение от Taras_Z Посмотреть сообщение
не if (ch=72) А if(ch==72)
и так везде!
совершенно верно
1
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
29.03.2012, 19:10 #5
оператор сравнения "==" , а не "=".
1
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
29.03.2012, 19:13 #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
44
45
46
47
48
#include <conio.h>
#include <iostream>
#include <clocale>
 
using namespace std;
 
int main()
{
    setlocale (LC_CTYPE, "Russian");
    char act;
    int ch;
    while (1)
    {
        act=_getch();
        ch = static_cast<int>(act);
        if (ch == -32)
        {
        }
        else if (ch == 27)
        {
            exit(0);
            break;
        }
        else if (ch == 75)
        {
            cout << "Нажата клавиша Влево\n";
        }
        else if (ch == 77)
        {
            cout << "Нажата клавиша Вправо\n";
        }
        else if (ch == 72)
        {
            cout << "Нажата клавиша Вверх\n";
        }
        else if (ch == 80)
        {
            cout << "Нажата клавиша Вниз\n";
        }
        else
        {
            cout << "Вы нажали неверную клавишу\n";
        }
    }
 
    _getch;
    return 0;   
}
1
Igor337
0 / 0 / 0
Регистрация: 28.01.2011
Сообщений: 60
29.03.2012, 20:14  [ТС] #7
Аааа. Ясно. Спасибо. А ещё такой вопрос. Дело в том, что я ещё только учу этот язык, а данную программу делаю по упражнению. Вопрос: А зачем нужна проверка на -32? Объясните, пожалуйста, очень подробно. Спасибо.
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
29.03.2012, 21:40 #8
Цитата Сообщение от Igor337 Посмотреть сообщение
А зачем нужна проверка на -32? Объясните, пожалуйста, очень подробно. Спасибо.

Смотри вложение! Код для "стрелок" считываеться как два значения(почему так, без понятия, тоже интересно) первое -32, а второе само значение (это действие только справедливо для стрелок)!

в начале мы считываем -32 и при этом не чего не делаем условие
C++
1
2
3
if (ch == -32)
        {
        }
а потом уже не посредственно сам код клавиши и выводим сообщение

C++
1
2
3
4
else if (ch == 75)
        {
            cout << "Нажата клавиша Влево\n";
        }

Не по теме:

что за ужас с отображение кода на форуме? отступы фиг знает какие и когда копипастишь в студию не понятные строчки между строками кода появляются!

0
Миниатюры
Запускается консоль, а нужный действий не выполняет  
Igor337
0 / 0 / 0
Регистрация: 28.01.2011
Сообщений: 60
29.03.2012, 22:06  [ТС] #9
А каким образом "считывает"? Как это вообще работает? Ведь если условие верно, то должна выполняться одна команда, а если нет, то другая. Всё! Только так. Каким образом оно может считывать, перенимать? Объясните, пожалуйста, с точки зрения построения алгоритма.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2012, 22:06
Привет! Вот еще темы с ответами:

Составить программу, которая выполняет четыре арифметических действий - Delphi
Составить программу, которая выполняет четыре арифметических действий.

В потоке цикл выполняет действий больше на число потоков - Delphi
ситуация не очень приятная. код просто огрызок но все же на начальном этапе есть проблема. При старте программы счетчик произведенных...

Если по окончанию всех действий консоль осталось пуста то вывести что-нибудь - C (СИ)
скажите как сделать так,чтобы если по окончанию всех действий консоль осталось пуста то вывести что-нибудь ну например напишу простенькую...

ГуглХром автоматически запускается и периодически открывает рекламные вкладки, AutoLogger не выполняет скрипт - Удаление вирусов
Доброго времени суток. Изначально была единственная проблема связанная с автоматическим запуском ГуглХромома и открытием в нем различных...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
29.03.2012, 22:06
Ответ Создать тему
Опции темы

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