Program znajdujący drogę wyjścia z labiryntu. Labirynt jest zapisany w pliku Labirynt.txt. Jest to kwadratowa tablica (20x20). Ściany mogą być zbudowane z jakiegokolwiek znaku z wyjątkiem "x" oraz spacji. "x" - oznacza wyjście.

#include <iostream.h>
#include <fstream.h> 
#include <stdlib.h> 
#include <string.h> 

const int szmax=20;
int ruch(char **tab,int i,int k);
void wypisz(char **tab); 

using namespace std; 

int main(int argc, char **argv) { 
char **tab;
tab = new char*[szmax];
for (int q=0;q<szmax;q++) tab[q] = new char[szmax];
ifstream labirynt;
labirynt.open("LABIRYNT.TXT");
if (!labirynt)
{
  cout << "\nBLAD OTWARCIA!\n";
  system ("Pause");
  return 1;
}
else
cout<<"gra labirynt\n\n";

for(int k=0; k<szmax&&labirynt; k++) //pobieranie znakow do tablicy
  { 
        for(int i=0;i<szmax;i++) 
        { 
        labirynt.get(tab[i][k]); 
        cout<<tab[i][k]; 
        } 
  labirynt.ignore(); //znak konca linii ignorowany
  cout<<endl; 
  } 

int x,y; 
cout << endl; 
cout << "podaj wspolrzedne\n";
cout << "x = ";
cin >> x; 
cout << "y = "; 
cin >> y; 
if ((x>=szmax) || (y>=szmax) || (x<0) || (y<0) || (tab[x][y]!=' ')) {
cout<<"zle wspolrzedne"<<endl;
system("pause");
return 0; 
} 
if (ruch(tab, x, y)==0) cout << "Brak wyjscia" << endl; 
else wypisz(tab);

for (int q=0;q<szmax;q++) delete tab[q];
delete tab;
system("pause");
return 0;
} 

void wypisz(char **tab) {//wyswietlanie plusika
int i, j;
for (i=0;i<szmax;i++) {
for (j=0;j<szmax;j++) cout << tab[j][i];
}
}

int ruch(char **tab,int i,int k) //funkcja odnosnie poruszania sie 
{ 
if (tab[i][k]=='x') return 1;
tab[i][k] = '+';
if (((i>0) && ((tab[i-1][k]==' ') || (tab[i-1][k]=='x'))) && (ruch(tab, i-1, k)==1)) return 1;
if (((i<szmax-1) && ((tab[i+1][k]==' ') || (tab[i+1][k]=='x'))) && (ruch(tab, i+1, k)==1)) return 1;
if (((k>0) && ((tab[i][k-1]==' ') || (tab[i][k-1]=='x'))) && (ruch(tab, i, k-1)==1)) return 1;
if (((k<szmax-1) && ((tab[i][k+1]==' ') || (tab[i][k+1]=='x'))) && (ruch(tab, i, k+1)==1)) return 1;
tab[i][k] = ' ';

return 0;}

oto labirynt zapisany w pliku "LABIRYNT.TXT":

AAAAAAAAAAAAAAAAAAAA
A         A     A  A
A AA AAAAAA A A A  A
AAA  A AA A A A A  A
A A AA AA A A A A  A
A    A    A A A    A
AA AAA AAAA AAAAAAAA
A                  A
AAA AAAAA AAAAAAA AA
A   A A A A     A  A
A AAA A A AAAAA AAAA
A   A A            x
AAA A A AA AAAAAAAAA
A   A    A         A
A AAA AAAAAA AAAAAAA
A  AA AA A       A A
AA AA    A A A A A A
A  AA AAAAAAAAAAAA A
AA                 A
AAAAAAAAAAAAAAAAAAAA

powinienem po skompilowaniiu otrzymac cos takiego:

AAAAAAAAAAAAAAAAAAAA
A++++     A     A  A
A AA+AAAAAA A A A  A
AAA++A AA A A A A  A
A A+AA AA A A A A  A
A ++ A    A A A    A
AA+AAA AAAA AAAAAAAA
A ++++++++         A
AAA AAAAA+AAAAAAA AA
A   A A A+A     A  A
A AAA A A+AAAAA AAAA
A   A A  ++++++++++x
AAA A A AA AAAAAAAAA
A   A    A         A
A AAA AAAAAA AAAAAAA
A  AA AA A       A A
AA AA    A A A A A A
A  AA AAAAAAAAAAAA A
AA                 A
AAAAAAAAAAAAAAAAAAAA
meta

zas otrzymuje np dla x=1,y=1:

gra labirynt

AAAAAAAAAAAAAAAAAAAA
A         A     A  A
A AA AAAAAA A A A  A
AAA  A AA A A A A  A
A A AA AA A A A A  A
A    A    A A A    A
AA AAA AAAA AAAAAAAA
A                  A
AAA AAAAA AAAAAAA AA
A   A A A A     A  A
A AAA A A AAAAA AAAA
A   A A            x
AAA A A AA AAAAAAAAA
A   A    A         A
A AAA AAAAAA AAAAAAA
A  AA AA A       A A
AA AA    A A A A A A
A  AA AAAAAAAAAAAA A
AA                 A
AAAAAAAAAAAAAAAAAAAA

podaj wspolrzedne
x = 1
y = 1
AAAAAAAAAAAAAAAAAAAAA++++     A     A  AA AA+AAAAAA A A A  AAAA++A AA A A A A  A
A A+AA AA A A A A  AA ++ A    A A A    AAA+AAA AAAA AAAAAAAAA ++++++++         A
AAA AAAAA+AAAAAAA AAA   A A A+A     A  AA AAA A A+AAAAA AAAAA   A A  ++++++++++x
AAA A A AA AAAAAAAAAA   A    A         AA AAA AAAAAA AAAAAAAA  AA AA A       A A
AA AA    A A A A A AA  AA AAAAAAAAAAAA AAA                 AAAAAAAAAAAAAAAAAAAAA
Aby kontynuować, naciśnij dowolny klawisz . . .

bardzo mi zalezy na tym programie bo inaczej nie otrzymam zaliczenia prosze o pomoc