"Wystąpił problem z aplikacji i zostanie ona zamknięta" - nie mogę odnaleźć błędu w kodzie
Ostatnio zmodyfikowano 2007-11-20 21:45
szarry Temat założony przez niniejszego użytkownika |
"Wystąpił problem z aplikacji i zostanie ona zamknięta" - nie mogę odnaleźć błędu w kodzie » 2007-11-20 19:39:25 #include <iostream> #include <conio.h> #include "console.ddt" using namespace ddt::console; using namespace std; string pole[ 4 ][ 4 ];
void rysuj( void ); int main() { int a = 0, b = 0; while( a != 5 && b != 5 ) { while( a != 5 ) { while( b != 5 ) { cout << "Wprowadz symbol dla: x=" << a << " y=" << b << endl; pole[ a ][ b ] = getch(); b++; } b = 0; a++; } } rysuj(); getch(); return 0; }
void rysuj( void ) { int a = 0; int b = 0; int x = 11, y = 1; while( a <= 4 && b <= 4 ) { while( a <= 4 ) { while( b <= 4 ) { gotoxy( x, y ); textbackground( 8 ); cout << pole[ a ][ b ]; b++; y++; } b = 0; y = 1; a++; x++; } } return; }
Jest to kod nieukończonego jeszcze programu, rozwiązującego klasyczne zadanie labiryntu (Zajdź drogę z punktu a do punktu b z ominięciem przeszkod), jednak po skompilowaniu i uruchomieniu tego " programu " w celu sprawdzenia, czy rysowanie przebiega prawidłowo w momencia wprowadzenia znaku do string pole [4] [0] program zawiesza się i na ekranie widnieje xpkowski komunikat: "Wystąpił problem z aplikacją labirynt.exe i zostanie ona zamknięta. Przepraszamy za kłopoty." Co jest tego przyczyną i jak rozwiązać ten problem?? |
|
DejaVu |
Naruszenie ochrony pamięci » 2007-11-20 20:01:20 Rozmiar tablicy Twojej to: string pole[ 4 ][ 4 ]; Wyjście poza tablicę = naruszenie ochrony pamięci Musisz zadbać o to, aby wartość indeksów była z przedziału [0..3][0..3]. Ty wychodzisz poza tą wartość, więc w pewnym momencie otrzymujesz naruszenie ochrony pamięci i wyrzuca Ci taki błąd. |
|
szarry Temat założony przez niniejszego użytkownika |
Czy dobrzę rozumiem? » 2007-11-20 21:02:33 Nie jestem pewien, czy dobrze zrozumiałem. Jak zamienię: na to broblem przestanie występować?? Chodzi mi o uzyskanie planszy (labiryntu) owymiarach 5x5 pól. |
|
DejaVu |
» 2007-11-20 21:45:18 Obecnie masz planszę 4x4, więc jeśli chcesz mieć 5x5 to musisz napisać to o czym mówisz. Czy problem przestanie występować, nie wiem. Nie sprawdzałem jak dokładnie działa Twój algorytm, ale jeśli algorytm jest poprawnie napisany to napewno będzie działało. |
|
« 1 » |