Пятница, 26 Апреля 2024, 04:08

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » C/C++ » Ошибка в С++ коде. Помогите понять! (Я изучаю С++)
Ошибка в С++ коде. Помогите понять!
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
почетный гость
Сейчас нет на сайте
Спасибо по методу Техника помогло но интересно в чем же у меня ошибка?

d
Code
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 почему выходит?
anton-garДата: Вторник, 21 Июня 2011, 14:57 | Сообщение # 12
WEBmaster
Сейчас нет на сайте
И исправь наконец название темы, а то глаз режет...
Ошыбка


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
почетный гость
Сейчас нет на сайте
Сенк разобрался но почему теперь программа останавливается перед циклом ?
anton-garДата: Вторник, 21 Июня 2011, 16:56 | Сообщение # 16
WEBmaster
Сейчас нет на сайте
А как ты сделал?

imperator12Дата: Вторник, 21 Июня 2011, 17:20 | Сообщение # 17
почетный гость
Сейчас нет на сайте
Вот код


Может это только у меня я не знаю.


Сообщение отредактировал imperator12 - Вторник, 21 Июня 2011, 17:21
ComentДата: Вторник, 21 Июня 2011, 18:54 | Сообщение # 18
почетный гость
Сейчас нет на сайте
А где расчет "n"? И, вроде, писали уже что switch "кагбе" тут кошерней смотрится.
P.S. скорее всего писать надо "choice" smile Но это так -- придирки smile

Добавлено (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
Сейчас нет на сайте
не беги вперед паровоза, у него в кузове куча навоза biggrin
Сначала выучи основы. а потом переходи на WinAPI


На синем небе
Попробуй-ка разглядеть
Синюю звезду
Форум игроделов » Программирование » C/C++ » Ошибка в С++ коде. Помогите понять! (Я изучаю С++)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг