Data: 2007-11-20 19:39:25
szarry | "Wystąpił problem z aplikacji i zostanie ona zamknięta" - nie mogę odnaleźć błędu w kodzie
#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??
| Data: 2007-11-20 20:01:20
Piotr Szawdyński | Naruszenie ochrony pamięci
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.
| Data: 2007-11-20 21:02:33
szarry | Czy dobrzę rozumiem?
Nie jestem pewien, czy dobrze zrozumiałem. Jak zamienię:
string pole[4][4];
na
string pole [5][5];
to broblem przestanie występować?? Chodzi mi o uzyskanie planszy (labiryntu) owymiarach 5x5 pól.
| Data: 2007-11-20 21:45:18
Piotr Szawdyński |
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. | |
| Statystyki tematu | Ostatnio przeczytali |
|---|
| Czytało użytkowników: | 8 | malan, Dante, geftus, pekfos, DeBugger, kiniro, Pito, Piotr Szawdyński | | Przeczytało użytkowników: | 8 | | Czytało osób ogólnie: | 13 | | Przeczytało osób ogólnie: | 13 |
| Ostatnia Aktualizacja| 2010-09-01 19:27:34 (6 dni temu) | |
| Ostatnio aktywni |
|---|
| fish13 | 3 godz | | wiewiorka | 9 godz | | Koni | 10 godz | | BuZuz | 10 godz | | Prezmen | 12 godz | | trupank | 12 godz | | szczgl | 14 godz | | filipesq | 14 godz | | KRIIS551 | 16 godz | | kuba1817 | 16 godz | | extra2 | 17 godz | | pixelmaster | 18 godz |
|