Помощь - Поиск - Пользователи - Календарь
Полная версия: Ханойские башни (вопрос по прогр-к)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Needhelp
 
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(c);
     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(c);
           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
Угу... В Паскале и есть.

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

Добавлено через 1 мин.
Вообще перепиши эту процедуру вот так:
procedure GraphInit;
 var GrDr,GrMode: Integer;
 begin
   GrDr:=Detect;
   InitGraph(GrDr,GrMode,'');
 end;
Needhelp
Не, ну круто!!! yes2.gif good.gif
Спасибо rolleyes.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.