Serwis został przeniesiony pod nową domenę: http://cpp0x.pl/
PowrótPowrótHistoria odwiedzonych stron
AutorWiadomość
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.

1



Statystyki tematuOstatnio przeczytali
Czytało użytkowników:8malan, 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



PowrótPowrótHistoria odwiedzonych stron
Panel Logowania
Login:
Hasło:

Użytkowników
Obecnie aktywnych:10
Zalogowanych:0
Zarejestrowanych:4367
Ostatnie 24h:720
Non-cookie 24h:2180
Wszystkich:214776
Ostatnia Aktualizacja
2010-09-01 19:27:34 (6 dni temu)
Ostatnio aktywni
fish133 godz
wiewiorka9 godz
Koni10 godz
BuZuz10 godz
Prezmen12 godz
trupank12 godz
szczgl14 godz
filipesq14 godz
KRIIS55116 godz
kuba181716 godz
extra217 godz
pixelmaster18 godz

Wynajem Sopot - wakacje
Pokój 2 osobowy 130zł/doba;
Lokalizacja: Sopot


O portaluArchiwumHistoriaIndeksRegulaminWyszukiwarkaLinki
Kurs HTML - strona WWW za darmoRestauracja "ATOL" - SopotValid HTML 4.01 TransitionalValid CSS!HTML CSS JavaScript FLASH PHP MySQL