Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Ханойские башни (вопрос по прогр-к)

Автор: Needhelp 5.04.2007 0:32

 
program Hanoy;
uses Crt,Graph;
type ArrType =array [1..1] of byte;
var Col,
Beg,End_ :byte;
Arr :^ArrType;
i,j :integer;

CountMoves: longint;

procedure GraphInit;
var GrDr,GrMode:smallint;
begin
GrDr:=d8bit;
GrMode:=m640x480;
InitGraph(GrDr,GrMode,'');
end;
procedure DrawRings;
var a,b,c:byte;
begin
ClearDevice;
SetColor(White);
Line(100,200,100,400);
Line(300,200,300,400);
Line(500,200,500,400);
Line(50,400,550,400);
SetFillStyle(SolidFill, Red);
SetColor(Yellow);
j:=0;a:=0;b:=0;c:=0;
for i:=1 to Col do
case Arr^[i] of
0:Inc(a);
1:Inc(b);
2:Inc©;
end;
for i:=1 to Col do
begin
case Arr^[i] of
0:begin
Bar(100+Arr^[i]*200-i*5,400-a*5,100+Arr^[i]*200+i*5,400-a*5-5);
Rectangle(100+Arr^[i]*200-i*5,400-a*5,100+Arr^[i]*200+i*5,400-a*5-5);
Dec(a);
end;
1:begin
Bar(100+Arr^[i]*200-i*5,400-b*5,100+Arr^[i]*200+i*5,400-b*5-5);
Rectangle(100+Arr^[i]*200-i*5,400-b*5,100+Arr^[i]*200+i*5,400-b*5-5);
Dec(b);
end;
2:begin
Bar(100+Arr^[i]*200-i*5,400-c*5,100+Arr^[i]*200+i*5,400-c*5-5);
Rectangle(100+Arr^[i]*200-i*5,400-c*5,100+Arr^[i]*200+i*5,400-c*5-5);
Dec©;
end;
end;
end;
if ReadKey=#27 then begin
CloseGraph;
halt(1);
end;
while KeyPressed do Readkey;
end;
procedure PrintQuant(c,b,e:byte);
begin
Arr^[c]:=e;
DrawRings;
Inc(CountMoves);
end;
procedure Move(c,b,e:byte);
begin
if c=1 then PrintQuant(c,b,e)
else
begin
Move(c-1,b,3-b-e);
PrintQuant(c,b,e);
Move(c-1,3-b-e,e);
end;
end;
begin
CountMoves := 0;

GraphInit;
Beg:=0;
End_:=2;
Col:=4;
GetMem(Arr,Col);
for i:=1 to Col do
Arr^[i]:=Beg;
DrawRings;
Move(Col,Beg,End_);
Freemem(Arr,Col);
CloseGraph;

writeln('Count = ', CountMoves);
ReadLn;
end.


Выдает такую ошибку (в прикрепленном файле фотка...) в строке var GrDr,GrMode:smallint; (что-то smallint не нравится)...
Может дело в Паскале???


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: volvo 5.04.2007 0:35

Угу... В Паскале и есть.

SmallInt - это для FPC, для твоего компилятора пользуйся Integer-ом.

Добавлено через 1 мин.
Вообще перепиши эту процедуру вот так:

procedure GraphInit;
var GrDr,GrMode: Integer;
begin
GrDr:=Detect;
InitGraph(GrDr,GrMode,'');
end;

Автор: Needhelp 5.04.2007 0:52

Не, ну круто!!! yes2.gif good.gif
Спасибо rolleyes.gif