Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2009, 17:43   #1
aiktz
Форумчанин
 
Регистрация: 10.03.2009
Сообщений: 104
Вопрос как исправить ошибку?

написала программу, которая рисует линию, похожую на дракона, но программа выдает ошибку "Error 113: Error in statement " кто может испраить ее. помогите!! или подскажите как ее исправить...я не пойму!



program Dragon2;
uses Graph, Crt;
var horfact, vertfact, x_max, y_max:real;
x__max,y__max,x,y,dx,dy,i,p,xmin,xm ax,ymax,ymin,ixC,iyC:integer;
fx,fy,f,xC,yC:real;
GrDriver, GrMode:integer;
n:longint;
function IX(x:real):integer;
begin
IX:=round(x*horfact+0.5);
end; {IX}
function IY(Y:real):integer;
begin
IY:=round(y*vertfact+0.5);
end; {IY}
procedure GMove(x,y:real);
begin
MoveTo(IX(x), IY(y));
end; {GMove}
procedure Draw(x,y:real);
begin
LineTo(IX(x), IY(y));
end; {Draw}
function Xreal(x:integer):real;
begin
Xreal:=xC+f*(x-ixC);
end; {Xreal}
function Yreal(y:integer):real;
begin
Yreal:=yC+f*(y-iyC);
end; {Yreal}
procedure Step(r:integer; prescan:Boolean);
var
t,dx1,dy1:integer;
begin
if prescan then
begin
x:=x+dx; y:=y+dy;
if(x<xmin) then xmin:=x;
if(x>xmax) then xmax:=x;
if(y<ymin) then ymin:=y;
if(y>ymax) then ymax:=y;
end
else
begin
dx1:=dx div 4;
dy1:=dy div 4;
Draw(xreal(x+dx1), yreal(y+dy1));
x:=x+dx;
y:=y+dy;
Draw(xreal(x-dx1), yreal(y-dy1));
end;
if(r=1) then
begin
t:=dx; dx:=-dy; dy:=t;
end
else
begin
t:=dx; dx:=dy; dy:=-t;
end; {Step}
procedure Gurve(prescan:boolean);
var i,j,r:Longint;
begin
i:=1;
while(i<=n) do
begin
i:=i+1;
j:=i;
while((j and 1)=0) do
j:=j shr 1;
r:=j and 3;
Step(r,prescan);
end;
end; {Gurve}
begin
Writeln ('Poryadok krivoi?');
Readln(p);
n:=1;
for i:=1 to p do n:=n*2;
GrDriver:=Detect;
InitGraph(GrDriver, GrMode, 'C:\tp7\bgi');
x_max:=10;
y_max:=7;
x__max:=GetMaxX;
y__max:=GetMaxY;
horfact:=x__max/x_max;
vertfact:=y__max/y_max;
x:=0;
y:=0;
dx:=4;
dy:=0;
xmin:=10;
xmax:=-10;
ymin:=10;
ymax:=-10;
Gurve(true);
fx:=x_max/(xmax-xmin);
fy:=y_max/(ymax-ymin);
if(fx<fy) then f:=fx*0.7 else f:=fy*0.7;
ixC:=(xmin+xmax) div 2;
iyC:=(ymin+ymax) div 2;
xC:=x_max/2;
yC:=y_max/2;
x:=0;
y:=0;
dx:=4;
dy:=0;
gMove(xreal(x+dx div 4), yreal(y));
Curve(false);
Readkey;
CloseGraph;
end;
end.
aiktz вне форума Ответить с цитированием
Старый 24.09.2009, 18:11   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Gurve -> Curve
end пропущен..
в конце end лишний...
Код:
program Dragon2;
uses Graph, Crt;
var horfact, vertfact, x_max, y_max: real;
  x__max, y__max, x, y, dx, dy, i, p, xmin, xmax, ymax, ymin, ixC, iyC: integer;
  fx, fy, f, xC, yC: real;
  GrDriver, GrMode: integer;
  n: longint;

function IX(x: real): integer;
begin
  IX := round(x * horfact + 0.5);
end; {IX}

function IY(Y: real): integer;
begin
  IY := round(y * vertfact + 0.5);
end; {IY}

procedure GMove(x, y: real);
begin
  MoveTo(IX(x), IY(y));
end; {GMove}

procedure Draw(x, y: real);
begin
  LineTo(IX(x), IY(y));
end; {Draw}

function Xreal(x: integer): real;
begin
  Xreal := xC + f * (x - ixC);
end; {Xreal}

function Yreal(y: integer): real;
begin
  Yreal := yC + f * (y - iyC);
end; {Yreal}

procedure Step(r: integer; prescan: Boolean);
var
  t, dx1, dy1: integer;
begin
  if prescan then
  begin
    x := x + dx; y := y + dy;
    if (x < xmin) then xmin := x;
    if (x > xmax) then xmax := x;
    if (y < ymin) then ymin := y;
    if (y > ymax) then ymax := y;
  end
  else
  begin
    dx1 := dx div 4;
    dy1 := dy div 4;
    Draw(xreal(x + dx1), yreal(y + dy1));
    x := x + dx;
    y := y + dy;
    Draw(xreal(x - dx1), yreal(y - dy1));
  end;
  if (r = 1) then
  begin
    t := dx; dx := -dy; dy := t;
  end
  else
  begin
    t := dx; dx := dy; dy := -t;
  end; {Step}
end;

procedure Curve(prescan: boolean);
var i, j, r: Longint;
begin
  i := 1;
  while (i <= n) do
  begin
    i := i + 1;
    j := i;
    while ((j and 1) = 0) do
      j := j shr 1;
    r := j and 3;
    Step(r, prescan);
  end;
end; {Gurve}
begin
  Writeln('Poryadok krivoi?');
  Readln(p);
  n := 1;
  for i := 1 to p do n := n * 2;
  GrDriver := Detect;
  InitGraph(GrDriver, GrMode, 'C:\tp7\bgi');
  x_max := 10;
  y_max := 7;
  x__max := GetMaxX;
  y__max := GetMaxY;
  horfact := x__max / x_max;
  vertfact := y__max / y_max;
  x := 0;
  y := 0;
  dx := 4;
  dy := 0;
  xmin := 10;
  xmax := -10;
  ymin := 10;
  ymax := -10;
  Curve(true);
  fx := x_max / (xmax - xmin);
  fy := y_max / (ymax - ymin);
  if (fx < fy) then f := fx * 0.7 else f := fy * 0.7;
  ixC := (xmin + xmax) div 2;
  iyC := (ymin + ymax) div 2;
  xC := x_max / 2;
  yC := y_max / 2;
  x := 0;
  y := 0;
  dx := 4;
  dy := 0;
  gMove(xreal(x + dx div 4), yreal(y));
  Curve(false);
  Readkey;
  CloseGraph;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.09.2009, 18:15   #3
NSvirus
пропагандирую жизЪ
Форумчанин
 
Аватар для NSvirus
 
Регистрация: 19.03.2007
Сообщений: 950
По умолчанию

Код:
program Dragon2;
uses Graph, Crt;
var horfact, vertfact, x_max, y_max:real;
x__max,y__max,x,y,dx,dy,i,p,xmin,xm ax,ymax,ymin,ixC,iyC:integer;
fx,fy,f,xC,yC:real;
GrDriver, GrMode:integer;
n:longint;
function IX(x:real):integer;
begin
IX:=round(x*horfact+0.5);
end; {IX}
function IY(Y:real):integer;
begin
IY:=round(y*vertfact+0.5);
end; {IY}
procedure GMove(x,y:real);
begin
MoveTo(IX(x), IY(y));
end; {GMove}
procedure Draw(x,y:real);
begin
LineTo(IX(x), IY(y));
end; {Draw}
function Xreal(x:integer):real;
begin
Xreal:=xC+f*(x-ixC);
end; {Xreal}
function Yreal(y:integer):real;
begin
Yreal:=yC+f*(y-iyC);
end; {Yreal}
procedure Step(r:integer; prescan:Boolean);
var
t,dx1,dy1:integer;
begin
if prescan then
begin
x:=x+dx; y:=y+dy;
if(x<xmin) then xmin:=x;
if(x>xmax) then xmax:=x;
if(y<ymin) then ymin:=y;
if(y>ymax) then ymax:=y;
end
else
begin
dx1:=dx div 4;
dy1:=dy div 4;
Draw(xreal(x+dx1), yreal(y+dy1));
x:=x+dx;
y:=y+dy;
Draw(xreal(x-dx1), yreal(y-dy1));
end;
if(r=1) then
begin
t:=dx; dx:=-dy; dy:=t;
end
else
begin
t:=dx; dx:=dy; dy:=-t;
end; {Step}
end; ;будьте внимательнее
procedure Gurve(prescan:boolean);
var i,j,r:Longint;
begin
i:=1;
while(i<=n) do
begin
i:=i+1;
j:=i;
while((j and 1)=0) do
j:=j shr 1;
r:=j and 3;
Step(r,prescan);
end;
end; {Gurve}
begin
Writeln ('Poryadok krivoi?');
Readln(p);
n:=1;
for i:=1 to p do n:=n*2;
GrDriver:=Detect;
InitGraph(GrDriver, GrMode, 'C:\tp7\bgi');
x_max:=10;
y_max:=7;
x__max:=GetMaxX;
y__max:=GetMaxY;
horfact:=x__max/x_max;
vertfact:=y__max/y_max;
x:=0;
y:=0;
dx:=4;
dy:=0;
xmin:=10;
xmax:=-10;
ymin:=10;
ymax:=-10;
Gurve(true);
fx:=x_max/(xmax-xmin);
fy:=y_max/(ymax-ymin);
if(fx<fy) then f:=fx*0.7 else f:=fy*0.7;
ixC:=(xmin+xmax) div 2;
iyC:=(ymin+ymax) div 2;
xC:=x_max/2;
yC:=y_max/2;
x:=0;
y:=0;
dx:=4;
dy:=0;
gMove(xreal(x+dx div 4), yreal(y));
Curve(false);
Readkey;
CloseGraph;
end.
Посторонним В.

Последний раз редактировалось NSvirus; 24.09.2009 в 18:18.
NSvirus вне форума Ответить с цитированием
Старый 24.09.2009, 18:56   #4
aiktz
Форумчанин
 
Регистрация: 10.03.2009
Сообщений: 104
По умолчанию

огроменное вам спасибо!!!!!!
aiktz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить ошибку KARUSHEV Помощь студентам 9 10.09.2009 13:01
Как исправить ошибку типа: 16-разрядная подсистема MS-DOS Mclaren Помощь студентам 10 28.04.2009 20:07
При переключении между чекбоксами - ошибка Stack overflow. Как исправить эту ошибку? SkAndrew Общие вопросы Delphi 5 26.08.2008 21:32
Исправить ошибку LLIypLLIyH Помощь студентам 5 16.06.2008 16:50
MySQL как исправить ошибку Dengar PHP 8 03.03.2008 03:29