Miért lép ki a programom windows hiba üzenettel?
Lefuttatnám a kódot, az első kirajzolást még megcsinálja a program, utána meg előjön a windows hibajelentő és kilép a program. Nem tudja vki, hogy mi lehet a gond?
KÓD:
#include <iostream>
#include <cstdlib>
using namespace std;
const int N=5;
int mtx[N][N]={
{0,1,1,1,1},
{0,0,1,0,3},
{0,1,1,0,1},
{0,0,0,0,1},
{0,0,1,1,1}
};
void mtxRajz(){
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
cout<<mtx[i][j];
}
cout<<endl;
}
}
bool find_path(int x, int y)
{
// x,y mátrixon kívűl van akkor false
if ( x < 0 || x > N - 1 || y < 0 || y > N - 1 ) return false;
// cél elérés
if ( mtx[y][x] == 3 ) return true;
// ha az első nem nulla kilép
if ( mtx[y][x] != 0 ) return false;
// FEL
if ( find_path(x, y - 1) == true ) return true;
// JOBB
if ( find_path(x + 1, y) == true ) return true;
// LE
if ( find_path(x, y + 1) == true ) return true;
// BAL
if ( find_path(x - 1, y) == true ) return true;
// zsákutca
mtx[y][x] = -1;
return false;
}
int main(){
int i=0,j=0;
mtxRajz();
cout<<endl;
if(find_path(i,j)==true) cout<<"van út"<<endl;
else cout<<"nincs út"<<endl;
mtxRajz();
}
Látatlanul is túlindexelés, és átnézve is.
-1-es index nem létezik.
Nincs túlindexelés. Végtelen ciklusba keveredik:
x:0 y: 1
x:0 y: 0
x:0 y: -1
x:1 y: 0
Ezek hívódnak egymás után.
Logikai hiba van benne, azt keresd meg!
A charral talán azért működhet, mert annak 0-255 is lehet az értékkészlete, és amikor 0-ból kivonsz 1-et, akkor 255 lesz belőle.
Bár Tengor is azt írta és sikeresen félreolvastam. Talán ez is hasznos lehet:
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!