Wto 14 Paź, 2008 17:42
Mam do napisania program - w i e ż a z H a n o i (piszę tak, bo nie chcę by ktoś to znalazł w google z mojej klasy ).
Na razie mam takie coś:
Prorgam teoretycznie działa - pokazuje mi końcowy wynik. Ale chcę by pokazywał każdy ruch - czyli, że po każdym przesunięciu ma pokazywać teraźniejszy wygląd słupków. Gdzie mam i co mam umieścić, by tak było? Próbowałem paru sposobów, ale wychodzi mi niewiadomoco...
Na razie mam takie coś:
program wieza;
uses crt;
type tab=array[0..15] of integer;
var n:word;
A, B, C:tab;
procedure przygotuj(n:word;var A,B,C:tab);
var i:integer;
begin
for i:=1 to n do
A[i]:=n-i+1;
A[0]:=A[1];
for i:=1 to n do
writeln(A[n-i+1]:2,' ',B[n-i+1],' ',C[n-i+1]);
end;
procedure przenies(n:word;var A,B,C:tab);
var i:integer;
begin
if n=1 then begin
B[0]:=B[0]+1;
B[B[0]]:=A[A[0]];
A[A[0]]:=0;
A[0]:=A[0]-1;
end else begin
przenies(n-1,A,C,B);
B[0]:=B[0]+1;
B[B[0]]:=A[A[0]];
A[A[0]]:=0;
A[0]:=A[0]-1;
przenies(n-1,C,B,A);
end;
end;
procedure pokaz(n:word; A,B,C:tab);
var i:integer;
begin
for i:=1 to n do
writeln(A[n-i+1]:2,' ',B[n-i+1],' ',C[n-i+1]);
end;
BEGIN
clrscr;
write('Podaj liczbe elementow (max. 15): '); readln(n);
writeln;
clrscr;
przygotuj(n,A,B,C);
przenies(n,A,B,C);
writeln; readln; clrscr;
pokaz(n,A,B,C);
readln;
END.
Prorgam teoretycznie działa - pokazuje mi końcowy wynik. Ale chcę by pokazywał każdy ruch - czyli, że po każdym przesunięciu ma pokazywać teraźniejszy wygląd słupków. Gdzie mam i co mam umieścić, by tak było? Próbowałem paru sposobów, ale wychodzi mi niewiadomoco...