Ошибка в С++ коде. Помогите понять!
|
|
imperator12 | Дата: Понедельник, 20 Июня 2011, 17:21 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Всем доброго времени суток. Я изучаю С++ дошол до вот такой задачи Я должен нажимать клавиши и передвигаться типо но при первом же нажатии програма закрывается
Сообщение отредактировал imperator12 - Вторник, 21 Июня 2011, 15:22 |
|
| |
Vinchensoo | Дата: Понедельник, 20 Июня 2011, 17:24 | Сообщение # 2 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Quote (imperator12) while(dir == '\r'); Если я нажму кнопку, переменная dir поменяет значение, программа выйдет из цикла=)
ЗЫ. Вложенность- класс
|
|
| |
imperator12 | Дата: Понедельник, 20 Июня 2011, 18:27 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| в книге написано что '\r' это ентер
|
|
| |
Vinchensoo | Дата: Понедельник, 20 Июня 2011, 18:30 | Сообщение # 4 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| imperator12, цикл идет пока дир не станет равен /r.
Ты жмешь кнопочку сходить, например, s, dir становиться равен s, из цикла выходит. Что не понятно?
|
|
| |
In_Search | Дата: Понедельник, 20 Июня 2011, 18:34 | Сообщение # 5 |
участник
Сейчас нет на сайте
|
Сообщение отредактировал In_Search - Понедельник, 20 Июня 2011, 18:34 |
|
| |
anton-gar | Дата: Понедельник, 20 Июня 2011, 18:41 | Сообщение # 6 |
WEBmaster
Сейчас нет на сайте
| Quote (imperator12) while(dir == '\r');
Сделай другую переменную! Или переделай цикл...
|
|
| |
Vinchensoo | Дата: Понедельник, 20 Июня 2011, 18:42 | Сообщение # 7 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Quote (anton-gar) dir='c'; while(dir!= '\r'); Так проще и быстрее
|
|
| |
Техник | Дата: Понедельник, 20 Июня 2011, 19:17 | Сообщение # 8 |
Глава X-ray Games
Сейчас нет на сайте
| Организуй циклом, вот так: Code ... while(cin >> dir) { if(dir == '\r') return -1; switch(dir) { case'n':y--; break; case's':y++; break; case'e':x++; break; case'w':x--; break; } } return 0; ...
|
|
| |
imperator12 | Дата: Вторник, 21 Июня 2011, 13:13 | Сообщение # 9 |
почетный гость
Сейчас нет на сайте
| Спасибо по методу Техника помогло но интересно в чем же у меня ошибка?
dCode ir='c'; while(dir!= '\r');
Вот так у меня почему то доходить до цикла while и останавливается
Сообщение отредактировал imperator12 - Вторник, 21 Июня 2011, 13:17 |
|
| |
anton-gar | Дата: Вторник, 21 Июня 2011, 13:31 | Сообщение # 10 |
WEBmaster
Сейчас нет на сайте
| Quote (imperator12) в чем же у меня ошибка?
Quote (Vinchensoo) цикл идет пока дир не станет равен /r. Ты жмешь кнопочку сходить, например, s, dir становиться равен s, из цикла выходит. Что не понятно?
|
|
| |
imperator12 | Дата: Вторник, 21 Июня 2011, 14:48 | Сообщение # 11 |
почетный гость
Сейчас нет на сайте
| Но ведь дир стает s а не /r почему выходит?
|
|
| |
|
Vinchensoo | Дата: Вторник, 21 Июня 2011, 14:59 | Сообщение # 13 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Quote (imperator12) Но ведь дир стает s а не /r почему выходит? У тебя проблемы с логикой, либо с литературой. Цикл идет твой пока Дир = /r, а s не равно /r
|
|
| |
anton-gar | Дата: Вторник, 21 Июня 2011, 15:06 | Сообщение # 14 |
WEBmaster
Сейчас нет на сайте
| Quote (imperator12) while(dir == '\r'); {
Цикл будет идти пока dir истинно = '\r', а 's' не - это не '\r'Добавлено (21.06.2011, 15:06) --------------------------------------------- Vinchensoo, не видел твой комментарий, +1...
|
|
| |
imperator12 | Дата: Вторник, 21 Июня 2011, 15:24 | Сообщение # 15 |
почетный гость
Сейчас нет на сайте
| Сенк разобрался но почему теперь программа останавливается перед циклом ?
|
|
| |
|
imperator12 | Дата: Вторник, 21 Июня 2011, 17:20 | Сообщение # 17 |
почетный гость
Сейчас нет на сайте
| Вот код
Может это только у меня я не знаю.
Сообщение отредактировал imperator12 - Вторник, 21 Июня 2011, 17:21 |
|
| |
Coment | Дата: Вторник, 21 Июня 2011, 18:54 | Сообщение # 18 |
почетный гость
Сейчас нет на сайте
| А где расчет "n"? И, вроде, писали уже что switch "кагбе" тут кошерней смотрится. P.S. скорее всего писать надо "choice" Но это так -- придирки
Добавлено (21.06.2011, 18:54) --------------------------------------------- Вроде так.
Code #include<iostream> using namespace std; #include<conio.h>
int main() { char dir=0; int x=10,y=10;
cout<<"enter enter because end\n"; do { cout<< "your coordinat"<<x<<" "<<y<<endl; cout<< "choice coordinat(n.s.e.w)"; dir = _getche(); if(dir == 'n'){ y--; }
if (dir == 's'){ y++; }
if (dir == 'e'){ x++; }
if (dir == 'w'){ x--;}
} while(dir != '\r'); return 0; }
Сообщение отредактировал Coment - Вторник, 21 Июня 2011, 18:57 |
|
| |
imperator12 | Дата: Вторник, 05 Июля 2011, 16:33 | Сообщение # 19 |
почетный гость
Сейчас нет на сайте
| Сенк помогло. Добавлено (05.07.2011, 16:33) --------------------------------------------- Еще почему у меня здесь выдает ошибку пишет что
Code visual studio 2008\projects\234\234\sdrf.cpp(8) : error C2664: MessageBoxW: невозможно преобразовать параметр 2 из 'const char [22]' в 'LPCWSTR' 1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции вот код
Code #include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "Простейшая программа!","WinAPI App", 0); }
|
|
| |
ilya7834 | Дата: Вторник, 05 Июля 2011, 16:56 | Сообщение # 20 |
Работаю на Irrlicht Engine
Сейчас нет на сайте
| не беги вперед паровоза, у него в кузове куча навоза Сначала выучи основы. а потом переходи на WinAPI
На синем небе Попробуй-ка разглядеть Синюю звезду
|
|
| |