Problem z goto
Ostatnio zmodyfikowano 2008-07-24 12:52
sebastian380 Temat założony przez niniejszego użytkownika |
Problem z goto » 2008-07-23 17:29:15 Witam. Napisałem program który nie chce się skompilować. I mam pytanie czym można zastąpić GOTO i w jaki sposób?? #include "console.ddt" #include <iostream> #include <conio.h> int random( int nMin, int nMax ) { return rand() % nMax + nMin; } using namespace std; int main() { poczatek: cout << "Witaj!\n"; cout << "Wybierz dzialanie: \ndodawanie-1 \nodejmowanie-2\n"; int dzialanie; cin >> dzialanie; switch( dzialanie ) { case 1: goto dodawanie; break; case 2: goto odejmowanie; break; default: return 0; break; } dodawanie: int dobre_odpowiedzi = 0; int zle_odpowiedzi = 0; ddt::console::textcolor( 14 ); cout << "\nPoziom 1 - Dodawanie\n"; ddt::console::textcolor( 7 ); srand( static_cast < unsigned int >( time( NULL ) ) ); int licznik = 0; do { int liczba_1 = random( 0, 6 ); int liczba_2 = random( 0, 6 ); int liczba_3 = liczba_2 + liczba_1; int zmienna; cout << "Podaj wynik dzialania:" << liczba_1 << "+" << liczba_2 << "\n"; cin >> zmienna; if( zmienna != liczba_3 ) { ddt::console::textcolor( 12 ); cout << "Zle\n"; ddt::console::textcolor( 7 ); licznik = licznik - 1; zle_odpowiedzi = zle_odpowiedzi + 1; } else { ddt::console::textcolor( 10 ); cout << "Dobrze\n"; ddt::console::textcolor( 7 ); licznik = licznik + 1; dobre_odpowiedzi = dobre_odpowiedzi + 1; } } while( licznik <= 9 ); cout << "Gratulacje!\n"; ddt::console::textcolor( 10 ); cout << "Ilosc dobrych odpowiedzi: " << dobre_odpowiedzi << "\n"; ddt::console::textcolor( 12 ); cout << "Ilosc zlych odpowiedzi: " << zle_odpowiedzi << "\n"; ddt::console::textcolor( 7 ); cout << "Dziekuje za gre!!!\n"; cout << "Nacisnij dowolny przycisk aby wyjsc\n"; getch(); odejmowanie: int dobre_odpowiedzi = 0; int zle_odpowiedzi = 0; ddt::console::textcolor( 14 ); cout << "Poziom 1 - Odejmowanie\n"; ddt::console::textcolor( 7 ); srand( static_cast < unsigned int >( time( NULL ) ) ); int licznik = 0; do { int liczba_10 = random( 0, 6 ); int liczba_11 = random( 0, 6 ); if( liczba_11 >= liczba_10 ) ddt::console::gotoxy( 142, 5 ); int liczba_12 = liczba_10 - liczba_11; cout << "Podaj wynik dzialania:" << liczba_10 << "-" << liczba_11 << "\n"; int zmienna; cin >> zmienna; if( zmienna != liczba_12 ) { ddt::console::textcolor( 12 ); cout << "Zle\n"; ddt::console::textcolor( 7 ); licznik = licznik - 1; zle_odpowiedzi = zle_odpowiedzi + 1; } else { ddt::console::textcolor( 10 ); cout << "Dobrze\n"; ddt::console::textcolor( 7 ); licznik = licznik + 1; dobre_odpowiedzi = dobre_odpowiedzi + 1; } cout << "Gratulacje!\nNacisnij dowolny przycisk aby wyjsc\n"; getch(); return 0; } |
|
DejaVu |
» 2008-07-23 19:08:01 Program Ci sie nie kompiluje bo: 1) Źle napisałeś druga pętlę do ... while (brak zakończenia) 2) Próbujesz zadeklarować 2 razy tą samą zmienną: int zmienna = 0;
int zmienna = 0;
3) tworzysz zmienne po użyciu etykiet #include "console.ddt" #include <iostream> #include <conio.h> int random( int nMin, int nMax ) { return rand() % nMax + nMin; } using namespace std;
int main() { int licznik, zle_odpowiedzi, dobre_odpowiedzi; poczatek: cout << "Witaj!\n"; cout << "Wybierz dzialanie: \ndodawanie-1 \nodejmowanie-2\n"; int dzialanie; cin >> dzialanie; switch( dzialanie ) { case 1: goto dodawanie; break; case 2: goto odejmowanie; break; default: return 0; break; } dodawanie: dobre_odpowiedzi = 0; zle_odpowiedzi = 0; ddt::console::textcolor( 14 ); cout << "\nPoziom 1 - Dodawanie\n"; ddt::console::textcolor( 7 ); srand( static_cast < unsigned int >( time( NULL ) ) ); licznik = 0; do { int liczba_1 = random( 0, 6 ); int liczba_2 = random( 0, 6 ); int liczba_3 = liczba_2 + liczba_1; int zmienna; cout << "Podaj wynik dzialania:" << liczba_1 << "+" << liczba_2 << "\n"; cin >> zmienna; if( zmienna != liczba_3 ) { ddt::console::textcolor( 12 ); cout << "Zle\n"; ddt::console::textcolor( 7 ); licznik = licznik - 1; zle_odpowiedzi = zle_odpowiedzi + 1; } else { ddt::console::textcolor( 10 ); cout << "Dobrze\n"; ddt::console::textcolor( 7 ); licznik = licznik + 1; dobre_odpowiedzi = dobre_odpowiedzi + 1; } } while( licznik <= 9 ); cout << "Gratulacje!\n"; ddt::console::textcolor( 10 ); cout << "Ilosc dobrych odpowiedzi: " << dobre_odpowiedzi << "\n"; ddt::console::textcolor( 12 ); cout << "Ilosc zlych odpowiedzi: " << zle_odpowiedzi << "\n"; ddt::console::textcolor( 7 ); cout << "Dziekuje za gre!!!\n"; cout << "Nacisnij dowolny przycisk aby wyjsc\n"; getch(); odejmowanie: dobre_odpowiedzi = 0; zle_odpowiedzi = 0; ddt::console::textcolor( 14 ); cout << "Poziom 1 - Odejmowanie\n"; ddt::console::textcolor( 7 ); srand( static_cast < unsigned int >( time( NULL ) ) ); licznik = 0; do { int liczba_10 = random( 0, 6 ); int liczba_11 = random( 0, 6 ); if( liczba_11 >= liczba_10 ) ddt::console::gotoxy( 142, 5 ); int liczba_12 = liczba_10 - liczba_11; cout << "Podaj wynik dzialania:" << liczba_10 << "-" << liczba_11 << "\n"; int zmienna; cin >> zmienna; if( zmienna != liczba_12 ) { ddt::console::textcolor( 12 ); cout << "Zle\n"; ddt::console::textcolor( 7 ); licznik = licznik - 1; zle_odpowiedzi = zle_odpowiedzi + 1; } else { ddt::console::textcolor( 10 ); cout << "Dobrze\n"; ddt::console::textcolor( 7 ); licznik = licznik + 1; dobre_odpowiedzi = dobre_odpowiedzi + 1; } } while( licznik <= 9 ); cout << "Gratulacje!\nNacisnij dowolny przycisk aby wyjsc\n"; getch(); return 0; }
Powyższy kod się kompiluje. Nie używaj etykiet - zapomnij że istnieją. Korzystaj z funkcji i różnych pętli - są one dużo lepsze i możesz zapisać to samo nie używając instrukcji goto. |
|
sebastian380 Temat założony przez niniejszego użytkownika |
Wielkie dzięki. » 2008-07-24 12:52:52 Teraz już wiem o co chodzi. |
|
« 1 » |