Kezdőoldal » Számítástechnika » Programozás » Mi a hiba a programba? (Pascal)

Mi a hiba a programba? (Pascal)

Figyelt kérdés

Mindig exitcode-2 a hibaüzenet. Lairintus feladat. Feladat: Adott egy mátrix tábléa 1-fal(Tilos ide lépni), 0-folyosó(szabad lépni). Megadok egy kiinduló pontos és le kell generálja az összes lehetséges irányt ahogy ki lehet jutni(Txt-be).

Txt:

Program:

1. [link]

2. [link]

3. [link]

4. [link]

5. [link]

6. [link]


Vélemnyem szerint a 6 résznél lehet a baj.

Nagyon Szépen köszönöm előre is a helpet :)



2014. máj. 15. 17:12
 1/9 anonim ***** válasza:
Szívesen segítek, de tegyél már meg annyit, hogy az egészet egyben feltöltöd valahova egy szövegfileban... (pl megnyitod jegyzettömben a .pas filet)
2014. máj. 15. 18:55
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:

Nagyon szépen köszönöm előre is:)


const dsor:array[1..4] of integer=(-1,0,1,0); {elmozdulas a sorbam}

const doszl:array[1..4] of integer=(0,1,0,-1); {elmozdulas oszlopban}

Var ut:array[1..50,1..50] of integer;{lepes a matrizban}

szabaly:array[1..20,1..20] of integer;

n,m,ks,ko:integer;{tabla merete}

megold:longint;{kapott megoldasok szama}

f:text;

Procedure be;

Var i,j:integer;

f:text;

Begin

assign(f,'lab1.txt');

reset(f);

read(n,m);

For i:=1 To n Do

begin

For j:=1 To m Do

begin

read(f,szabaly[i,j]);

{write(szabaly[i,j]);}

writeln;

end;

end;

Close(f);

end;



Procedure kiir;

Var i,j:integer;

Begin

megold:=megold+1;

writeln(f,megold,'.Megoldas:');

For i:=1 To n Do

begin

For j:=1 To m Do

If ut[i,j]<>0 then

write(f,ut[i,j])

else

If szabaly[i,j]=0 then

write(f,' . ')

else

write(f,' X ');

end;

writeln(f,'_________________________');

End;


Procedure back(rs,ro,lepes:integer);

Var sor,oszl,irany:integer;

Begin

For irany:=1 To 4 Do

begin

sor:=rs+dsor[irany];

oszl:=ro+doszl[irany];

If (sor>=1) and (sor<=n) and (oszl>=1) and (oszl<=m) then {matrxba vagyok}

If (ut[sor,oszl]=0) and (szabaly[sor,oszl]=0) then {meg nem voltunk abba a pontba}

begin

ut[sor,oszl]:=lepes; {oda lepes}

If (sor=1) or (sor=n) or (oszl=1) or (oszl=m) then {megvan a kijutas a szelehez ertem}

kiir

else

begin

back(sor,oszl,lepes+1);{tovabb lepek}

ut[sor,oszl]:=0;{ha megse ez a lepes kellet}

end;

end;

end;

End;


BEGIN

be;

assign(f,'labkijutas.txt');

rewrite(f);

close(f);

write('sor='); readln(ks);

write('oszlop='); readln(ko);

If szabaly[ks,ko]=1 then

write('FAL')

else

begin

ut[ks,ko]:=1;

back(ks,ko,2);

end;


writeln('Vege',megold,' Megoldas a txtbe');

readln;

End.

2014. máj. 15. 19:37
 3/9 SimkoL ***** válasza:
Nem néztem végig a programodat de Exitcode 2 : File Not Found !
2014. máj. 15. 19:50
Hasznos számodra ez a válasz?
 4/9 SimkoL ***** válasza:
A kiir eljárásban nézelődjél szerintem.
2014. máj. 15. 20:02
Hasznos számodra ez a válasz?
 5/9 tabaki ***** válasza:

Azzal kezded, hogy elugrasz a BE eljárásba, és beolvasol egy labirintust. Bocs, nekem ilyesmi nincs a ház körül, máris vége a dalnak.

Nem, mintha az utána következő fogást érteném:


assign(f,'labkijutas.txt');

rewrite(f);

close(f);


Létrehozol egy fájlt, és abban a pillanatban be is zárod. Ahogy látom, minden írási próbálkozás ezután történne, de ugyebár, hova? Szerintem a fájlt csak a program végén, a

writeln('Vege',megold,' Megoldas a txtben');

sor előtt kéne lezárnod, csak éppen ellenőrizni nem tudom, lásd az első megjegyzésemet.

2014. máj. 16. 02:55
Hasznos számodra ez a válasz?
 6/9 tabaki ***** válasza:
Hm, látni vélek még egy pár disznóságot. Tedd már föl valahova a lab1.txt-t is, hogy letölthessük, így nem lehet tesztelni.
2014. máj. 16. 03:24
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:

Végülis ott volt a probléma, hogy:

assign(f,'labkijutas.txt');

rewrite(f);

BE(f);

és a végén kellet bezárni a txt:) Köszönöm a segitséget :)

2014. máj. 17. 11:38
 8/9 tabaki ***** válasza:
És most itt hagysz kétségek közt őrlődve? Tényleg érdekelne a dolog vége, de végül is nem tartozik rám.
2014. máj. 17. 12:34
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:

Kicsit át lett alakítva pár helyen. A txt-éd igy néz ki, de ezt kedved szerint alakíthatod:

[link]


const dsor:array[1..4] of integer=(-1,0,1,0);


{elmozdulas az oszlopban}

const doszl:array[1..4] of integer=(0,1,0,-1);


var ut,szabaly:array[1..50,1..50] of integer; {lepesek matrixa}

n,m,ks,ko:integer; {tabla merete} {ks-ko- "kiindulo" sor, oszlop}

megold:longint; {kapott megoldasok szama}

f:text;


procedure beolvas;

var i,j:integer;

f:text;

begin

assign(f,'lab1.txt');reset(f);

read(f,n,m);


for i:=1 to n do

begin

for j:=1 to m do

begin

read(f,szabaly[i,j]);

write(szabaly[i,j]:2);

end;

writeln;

end;

close(f);

end;


procedure kiir;

var i,j:integer;

begin

megold:=megold+1;


writeln(f,megold,'. megoldas:');

for i:=1 to n do

begin

for j:=1 to m do

if ut[i,j]<>0 then write(f,ut[i,j]:3)

else

if szabaly[i,j]=0 then write(f,' .')

else write(f,' X');


writeln(f);

end;

writeln(f,'-------------------');

end;


procedure back(rs,ro,lepes:integer);

var sor, oszl, irany : integer;

begin

for irany:=1 to 4 do

begin

sor :=rs+dsor[irany];

oszl:=ro+doszl[irany];

if (sor>=1) and (sor<=n)

and (oszl>=1) and (oszl<=m) then {a matrixban vagyok-e}

if (ut[sor,oszl]=0) and (szabaly[sor,oszl]=0) then {meg nem jartunk abban a pontban}

begin

ut[sor,oszl]:=lepes; {odalepek}

if (sor=1) or (sor=n) or (oszl=1) or (oszl=m) then {megtettem az osszes lepest}

kiir

else

back(sor, oszl, lepes+1); {tovabblepek}

ut[sor,oszl]:=0; {mi van ha megsem ez a lepes kellett}

end;

end;

end;


BEGIN

assign(f,'lab1_kijutas.txt');rewrite(f);

beolvas;

writeln('ks=');readln(ks);

writeln('ko=');readln(ko);


if szabaly[ks,ko]=1 then writeln('fal')

else begin

ut[ks,ko]:=1;

back(ks,ko,2);

writeln('Vege ', megold, ' megoldast talaltam, a TXT allomanyban megtalalod!');

end;


close(f);



readln;

END.

2014. máj. 17. 16:12

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!