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

Програмка выдает неправильное значение - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка "конструкторы не разрешены для возвращаемого типа" http://www.cyberforum.ru/cpp-beginners/thread1245317.html
Создаю класс: class main_ { public: main_(); ~main_(); } за классом пишу: main_::main_() {
C++ Как быть когда нужно вернуть NULL? Как быть если нужно чтобы функция в некоторых условиях возвращала NULL, а не возвращаемый тип? http://www.cyberforum.ru/cpp-beginners/thread1245302.html
C++ Нужно чтобы на экран числа выводились в 16-ричном формате
В кратце: пишу CAN-месенджер в принципе он работает, но есть одно НО. Мне нужно чтобы на экран числа выводились в 16-ричном формате. Ниже привожу код преобразования: void can_protocol::ShowOneCanFrame(Can_frame message, int position) { if(ptrII == NULL) return; TCHAR buf; _swprintf(buf, _T("%u"), position+1); ptrII->message_list.SetItemText(position, 0, buf); _swprintf(buf,...
C++ Возможна ли константная наследуемость?
Здравствуйте! Определил класс, который позволяет хранить некие данные (предоставляет интерфейс), и, в случае, если экземпляр - неконстантный, то изменять эти данные. Вопрос: можно ли унаследовать от этого класса таким образом, чтобы он считался константным, не делая константным производный объект?
C++ Как сделать подбор рандомный разных чисел (srand (time(0) не помогает)? http://www.cyberforum.ru/cpp-beginners/thread1245262.html
Здравствуйте, уважаемые программиты, не могли бы вы мне помочь? Дело в том, что мне нужно сделать генератор рандомных чисел. Я уже пытался сделать это с помощью команды srand (time(0)). Но мне выдало предупреждение, что возможна потеря данных, и числа всё равно всё время получались одинаковыми! Как мне сделать, чтобы они всё время были разные? Заранее благодарю!
C++ Описать тип-класс TRoom (для вычисления площади комнаты) и его методы Описать тип-класс TRoom (для вычисления площади комнаты) и его методы: ввод длины комнаты; ввод ширины комнаты; вывод размеров комнаты; вычисление площади комнаты. Описать тип-класс TVRoom, потомок TRoom (для вычисления объёма комнаты) и методы его потомка: ввод высоты комнаты, вывод высоты комнаты и вычисление объёма комнаты. подробнее

Показать сообщение отдельно
tamir
0 / 0 / 3
Регистрация: 21.08.2014
Сообщений: 6
21.08.2014, 15:45     Програмка выдает неправильное значение
Да, у меня шагает, но проходит сквозь стены)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <conio.h>
#include <windows.h>
 
#define size 28
 
using namespace std;
 
bool labyrEdit(int labyr[][size],short var) //изменение матрицы взависимости от действия
{
    
if(var == 5) return 0;//проверяет на начало программы
 
for(int z = 0;z<size;z++)//цикл матрицы
{
    for(int w = 0;w<size;w++)
    {
 
        if(labyr[z][w] == 6)//проверка на наличие "персонажа"
        {
            switch(var)//применение действия
            {
                case 1://вверх
                    if(labyr[z+1][w]!=1)// проверяем что это не "стенка"
                    {
                        labyr[z][w]=0;//закрываем за собой "след"
                        labyr[z-1][w]=6;//переходим в след значение матрицы
                        //if(labyr[0][4] == 6)return 1;//если мы дошли до выхода, говорим что это правда.
                        return 0;//возвращаем что игра еще не окончена
                    }
                    else
                    {
                        cout<<"You hit the wall."<<endl;//если уперлись в стенку
                        return 0;//возвращаем что игра еще не окончена
                    }
                case 2://влево
                    if(labyr[z][w-1]!=1)
                    {
                        labyr[z][w]=0;
                        labyr[z][w-1]=6;
                        return 0;
                    }
                    else
                    {
                        cout<<"You hit the wall."<<endl;
                        return 0;
                    }
                case 3://вниз
                    if(labyr[z+1][w]!=1)
                    {
                        labyr[z][w]=0;
                        labyr[z-1][w]=6;
                        return 0;
                    }
                    else
                    {
                        cout<<"You hit the wall."<<endl;
                        return 0;
                    }
                case 4://вправо
                    if(labyr[z][w+1]!=1)
                    {
                        labyr[z][w]=0;
                        labyr[z][w+1]=6;
                        return 0;
                    }
                    else
                    {
                        cout<<"You hit the wall."<<endl;
                        return 0;
                    }
                default://если предоставили не корректное значение движения.
                    cout<<"No press desired key"<<endl;
                    return 0;
            }
        }
 
    }
}
cout<<"The program did not find the character."<<endl;//если программа не нашла "персонажа"
cout<<labyr[26][25]<<endl;//убеждаемся, что "персонаж" все же есть.
return 1;//возвращаем значение об окончании игры( в моем случае для того чтоб выявить ошибку)
}
 
int labyrMove()//инициализация клавиш движения
{
    int keyStroke;
    do//цикл до нажатия необходимой клавиши
    {
        keyStroke=getch();
        if(keyStroke==224)
        {
            keyStroke=getch();
            switch(keyStroke)
            {
            case 72://вверх
                cout<<"up"<<endl;
                return 1;
            case 75://лево
                cout<<"left"<<endl;
                return 2;
            case 80://вниз
                cout<<"down"<<endl;
                return 3;
            case 77://право
                cout<<"right"<<endl;
                return 4;
            default:
                cout<<"some other key"<<endl;
            }
        }
        else cout<<"Some other key"<<endl;
    }
    while(keyStroke!=27);//27 = esc выход
    return 0;
}
 
void labyrPrint( int labyr[][size])//вывод матрицы взависимости от значения элементов
 {
    for(int x=0;x<size;x++)
    {
        for(int y=0;y<size;y++)
        {
            switch(labyr[x][y])//вывод знаков в зависимости от элементов матрицы
            {
            case 1://выводим || - "стенку"
            {
                cout<< (char)124 << (char)124;
                break;
            }
            /*case 2:
            {
                cout<<(char)58<<(char)58;
                * break;
            }*/
            case 4://выводим знак начала
            {
                cout<< (char)94 << (char)94;
                break;
            }
            case 5://выводим знак "финиша"
            {
                cout<< (char)42 << (char)42;
                break;
            }
            case 6://выводим знак "персонажа"
            {
                
                cout << "Q";
                break;
            }
            default://для всех других знаков, поскольку матрица статичная, то в моем случае это 0.
            {
                cout<< "  ";
                break;
            }
            }
        }
        cout << endl;
    }
    cout<<"\t\t\t"<< (char)81 << " - it's you."<<endl;
}
 
int main()
{
    SetConsoleCP(1251);//пытался выводить в консоль русский язык, но в ХП не получилось.
    SetConsoleOutputCP(1251);//хоть это для ввода кирилических символов, но все же...
    srand(time(0));
    bool theEnd; //значение для проверки победы
    short var = 5;//значение для инициализации "движения"
    int counterMoves=0;//подсчет ходов
    int labyr[size][size]=      {{1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
                                   {1,1,1,1,2,1,1,1,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0,1,2,2,2,1},
                                   {1,1,2,2,2,1,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,2,1,2,1},
                                   {1,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,1},
                                   {1,2,1,1,0,1,1,2,2,2,2,2,2,2,2,1,0,1,1,1,1,1,1,1,1,1,2,1},
                                   {1,2,1,0,0,1,0,2,1,1,1,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0,2,1},
                                   {1,2,1,0,1,1,1,2,1,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1,2,1},
                                   {1,2,1,0,1,0,1,2,1,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,2,1},
                                   {1,2,1,0,1,0,1,2,1,0,1,1,1,0,1,0,1,1,1,1,1,0,1,0,1,1,2,1},
                                   {1,2,1,0,1,0,1,2,2,2,2,0,0,0,1,0,1,0,1,0,0,0,1,0,1,1,2,1},
                                   {1,2,1,0,1,0,1,1,1,1,2,1,1,1,1,0,1,0,1,1,1,1,1,0,1,1,2,1},
                                   {1,2,2,2,1,0,0,0,1,0,2,1,0,0,0,0,1,0,1,0,0,0,0,0,0,1,2,1},
                                   {1,0,1,2,1,1,1,0,1,1,2,1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,2,1},
                                   {1,1,0,2,2,2,1,0,1,1,2,1,1,0,1,1,0,1,0,1,1,0,1,0,0,1,2,1},
                                   {1,0,1,1,1,2,1,2,2,2,2,1,0,0,1,0,0,0,0,0,1,0,1,0,1,1,2,1},
                                   {1,0,1,0,0,2,1,2,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,2,1},
                                   {1,0,1,1,1,2,1,2,1,0,1,0,0,0,1,0,0,0,1,0,1,0,1,1,0,1,2,1},
                                   {1,0,1,0,0,2,1,2,1,0,0,0,1,0,0,0,1,0,1,2,2,2,2,1,0,1,2,1},
                                   {1,0,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,0,1,2,1,1,2,1,0,1,2,1},
                                   {1,0,1,3,3,3,1,1,0,0,0,0,0,0,0,0,0,0,0,2,1,1,2,2,2,2,2,1},
                                   {1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1},
                                   {1,3,1,1,1,0,1,3,3,3,1,0,1,0,0,0,0,0,0,2,1,2,2,2,1,0,1,1},
                                   {1,3,0,0,0,0,1,3,1,3,1,0,1,1,1,1,1,1,1,2,1,2,1,2,1,0,1,1},
                                   {1,3,1,1,1,1,1,3,1,3,1,0,0,0,0,0,0,0,0,2,2,2,1,2,1,0,1,1},
                                   {1,3,3,3,3,3,3,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,1,1},
                                   {1,1,1,1,1,1,1,1,1,3,3,3,3,1,3,3,3,1,3,3,3,1,1,2,2,2,1,1},
                                   {1,0,0,0,0,0,0,0,0,0,1,1,3,3,3,1,3,3,3,1,3,3,3,3,1,6,1,1},
                                   {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1}};
/* 0 - ложный путь , 1 - стенка , 2 - верный путь, 3 - секретный путь , 4 - начало, 5 - конец
 * 6 - это персонаж*/
 
    labyrPrint(labyr);//вывод матрицы вначале программы
    cin.get();
    cout<<"You are standing at the en]trance to the maze"<<endl;
    cout<<"Managing arrow Scroll from the beginning -"<<(char)94 << (char)94<<" to exit -"<<(char)42 << (char)42<<endl;
    cin.get();
    cout <<"Press Esc to exit"<<endl;
    do//начало самой игры
    {
        var = labyrMove();//выбираем движение
        if(var!=0)//если не нажали кнопку выхода
        {
            theEnd = labyrEdit(labyr,var);//в соответствии с движением выполняем изменение массива
            if (theEnd == true)//если персонаж достиг финиша
            {
                labyrPrint(labyr); //выводим матрицу
                cout << "Congratulations, you have completed the Labyrinth !!!"<<endl;
                return 0;//конец программы
            }
 
            labyrPrint(labyr);//выводим матрицу после изменения
            counterMoves++;//подсчет движения
            cout <<"Move = "<<counterMoves<<endl;//вывод колличества передвижений
        }
    }
    while(var!=0);//если нажали выход(esc)
 cout<<"Successfully conduct the rest of his life in the LABYRINTH"<<endl;
 return 0;//конец программы 
    
}
 
Текущее время: 07:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru