Skocz do zawartości

c++ problem's


radSun

Rekomendowane odpowiedzi

Robie c o ś w C++ :lol: . Dlaczego w tym kawałku

#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>

main()
{
 int score,x,y,time;
 x=7;
 y=10;
 time=300;
 do
 {
 gotoxy(5,5);
 cprintf("X");
 gotoxy(x,y);
 cprintf("Y");
 }
 while
 (getch();)
}

wyskakuje mi błąd:

21 main.cpp  parse error before `;'

?

Odnośnik do komentarza
Udostępnij na innych stronach

Mam jeszcze 1 błąd, tym razem kod duższy:

#include <conio.c>
#include <conio.h>

main()
{
 int score,x,y,move;
 unsigned char znak;
 x=7;
 y=10;
 move=30;
 do
 {
   gotoxy(5,5);
   cprintf("X");
   gotoxy(x,y);
   cprintf("Y");
   if (move=30)
   {
     if (kbhit())
     {
     znak = (unsigned char) getch();
     switch(znak)
       {
       case 75:
         y-1;
         break;
       case 77:
         y+1;
         break;
       case 80:
         x+1;
         break;
       case 72:
         x-1;
         break;
       }
     move=0;
     }
   }
   else
   {
     move++;
   }
 }
 while
 (getch());
}

A błąd:

24 main.cpp
implicit declaration of function `int kbhit(...)'

Edytowane przez radSun
Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Nigdy nie słyszałem, żeby taka funkcja jak kbhit istniała w bibliotece conio, więc wyguglałem to:

Prototype: int kbhit(void);

Header File: conio.h

Explanation: This function is not defined as part of the ANSI C/C++ standard. It is generally used by Borland's family of compilers. It returns a non-zero integer if a key is in the keyboard buffer. It will not wait for a key to be pressed.

Szybko na polski. Funkcja ta nie jest częścią standardu ANSI C/C++ i jest głównie używana w kompilatorach od Borland'a.

 

Jakiego kompilatora używasz? :]

 

Poza tym czemu robisz include pliku conio.c? Powinno być tylko conio.h

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...

Skoro mam nie pytać na shotboxie to zapytam na formu :lol2:

Mam taki oto kod:

string czynnosc;
cout<<"Komenda: ";
cin>>czynnosc;
switch (czynnosc)
{
 case "w": cout<<"Ruch w gore"; break;
 case "s": cout<<"Ruch w dol"; break;
 case "a": cout<<"Ruch w lewo"; break;
 case "d": cout<<"Ruch w prawo"; break;
 default: cout<<"Nieznana komenda!"; break;
}
getch();

Oczywiście jak to bywa w moich problemach wyskakuje błąd:

switch quantity not an integer
case label `"w"' does not reduce to an integer constant
break statement not within loop or switch
...

Mam pytanie czy w switch można używać wyrazów?

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze: nie case "w" tylko case 'w'.

Po drugie: nie prościej zamiast stringa dać chara?

Według mnie to powinno wyglądać tak:

char czynnosc;
cout<<"Komenda: ";
cin>>czynnosc;
switch (czynnosc)
{
case 'w': cout<<"Ruch w gore"; break;
case 's': cout<<"Ruch w dol"; break;
case 'a': cout<<"Ruch w lewo"; break;
case 'd': cout<<"Ruch w prawo"; break;
default: cout<<"Nieznana komenda!"; break;
}
getch();

Odnośnik do komentarza
Udostępnij na innych stronach

Maximal@ " i ' to praktycznie to samo dla kompilatora :]

 

char czynnosc;
cout<<"Komenda: ";
cin>>czynnosc;
switch (czynnosc)
{
case 'w' : cout << "Ruch w gore"; break;
case 's' : cout << "Ruch w dol"; break;
case 'a' : cout << "Ruch w lewo"; break;
case 'd' : cout << "Ruch w prawo"; break;
default : cout << "Nieznana komenda!";
}
getch();

Mi działa i po default : instrukcja; nie potrzeba break;

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...

Mam kolejny problem. :(

 

Kod:

enum POLE{ P_PUSTE=C_PUSTE,
          P_MUR=C_MUR,
          P_GRACZ=C_GRACZ};
enum STATUS{S_MENU,S_GRA};
enum COS{ C_PUSTE=" ",
         C_MUR="O",
         C_GRACZ="X"};

Błąd:

d:\overlord\jkjk.cpp:6: `C_PUSTE' was not declared in this scope
d:\overlord\jkjk.cpp:6: enumerator value for `P_PUSTE' not integer constant
d:\overlord\jkjk.cpp:7: `C_MUR' was not declared in this scope
d:\overlord\jkjk.cpp:7: enumerator value for `P_MUR' not integer constant
d:\overlord\jkjk.cpp:8: `C_GRACZ' was not declared in this scope
d:\overlord\jkjk.cpp:8: enumerator value for `P_GRACZ' not integer constant
d:\overlord\jkjk.cpp:10: enumerator value for `C_PUSTE' not integer constant
d:\overlord\jkjk.cpp:11: enumerator value for `C_MUR' not integer constant
d:\overlord\jkjk.cpp:12: enumerator value for `C_GRACZ' not integer constant

Wie ktoś w czym błąd?

Odnośnik do komentarza
Udostępnij na innych stronach

Owszem, w Pascalu i pochodnych trzeba zadeklarować zmienne. Raport błędów w tym skrypcie najwyraźniej mówi o tym, że ich nie zadeklarowałeś. Nie pamiętam, ale wydaje mi się, że trzeba deklarować zmienne.

A tak na marginesie... dość dużo tutaj błędnych skryptów dawałeś... Ciekawi mnie, co to za program, który piszesz.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 miesiące temu...
Błąd:

d:\overlord\jkjk.cpp:6: `C_PUSTE' was not declared in this scope
d:\overlord\jkjk.cpp:6: enumerator value for `P_PUSTE' not integer constant
d:\overlord\jkjk.cpp:7: `C_MUR' was not declared in this scope
d:\overlord\jkjk.cpp:7: enumerator value for `P_MUR' not integer constant
d:\overlord\jkjk.cpp:8: `C_GRACZ' was not declared in this scope
d:\overlord\jkjk.cpp:8: enumerator value for `P_GRACZ' not integer constant
d:\overlord\jkjk.cpp:10: enumerator value for `C_PUSTE' not integer constant
d:\overlord\jkjk.cpp:11: enumerator value for `C_MUR' not integer constant
d:\overlord\jkjk.cpp:12: enumerator value for `C_GRACZ' not integer constant

Wie ktoś w czym błąd?

 

nie jestem pewien ale masz blad ze wart nie jest integer, a z tego co ja sie orientuje do enum mozna przypisac liczby, znakow nie mozna ...

 

Kod:

enum POLE{ P_PUSTE=C_PUSTE,
           P_MUR=C_MUR,
           P_GRACZ=C_GRACZ};
enum STATUS{S_MENU,S_GRA};
enum COS{ C_PUSTE=" ",
          C_MUR="O",
          C_GRACZ="X"};

 

w pierwszych liniach wartosci sa jeszcze nie znane bo wprowadziles je pozniej, a do tego C_MUR i C_GRASZ maja przypisane znaki

 

enum COS{ C_PUSTE=" ",
          C_MUR="1",
          C_GRACZ="2"};
enum POLE{ P_PUSTE=C_PUSTE,
           P_MUR=C_MUR,
           P_GRACZ=C_GRACZ};

 

sproboj w tej kolejnosci, a wstawianie pozniej O i X rozwiaz w programie zaleznie czy 1 czy 2,

ps. tak mi sie wydaje, pewnosci nigdy nie ma ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...