Odpowiedź :
program gravity2;
uses crt, graph;
var
ster,tryb,odbicia,
progress,
maxtextheight,
maxtextwidth,
textx,texty : integer;
y,x,xstep,
lastY,grawitacja : real;
tekst,tmp : string;
koniec : boolean;
begin
koniec:=false;
textx:=10;
texty:=450;
ster:=VGA; tryb:=VGAHi;initgraph(Ster,Tryb,'C:\TP\BGI'); ClearDevice;
SetTextStyle(DefaultFont, HorizDir, 1);
tekst:='y: 000.0; x: 000.0 '; maxtextheight:=TextHeight(tekst); maxtextwidth:=TextWidth(tekst);
{************************}
odbicia:=7;
Grawitacja:=0;
{************************}
xstep :=((Pi*odbicia)/GetMaxX);
lasty:=0; x:=0; progress:=0;
repeat
if keypressed then koniec:=(readkey=#27);
SetColor(6); rectangle(textx-5,texty-5,textx+MaxTextWidth+5,texty+MaxTextHeight+5); SetFillStyle(0,6);
FloodFill(textx-4,texty-4,6); SetColor(15);
y:= cos(x)*(GetMaxY-(Grawitacja*Progress*(GetMaxY/GetMaxX))); if y<0 then y:=-y; x:= x + xstep;
line(round(progress-1),GetMaxY-round(lasty),round(progress),GetMaxY-round(y));
lasty:=y;
progress:=progress+1;
tekst :='y: '; str(y:4:1,tmp);tekst:=tekst+tmp; tekst:=tekst+'; x: '; str(x:4:1,tmp); tekst:=tekst+tmp;
OutTextXY(textx,texty,tekst);
delay(10);
until koniec or ( progress>=GetMaxX );
repeat until keypressed;
CloseGraph;
end.
uses crt, graph;
var
ster,tryb,odbicia,
progress,
maxtextheight,
maxtextwidth,
textx,texty : integer;
y,x,xstep,
lastY,grawitacja : real;
tekst,tmp : string;
koniec : boolean;
begin
koniec:=false;
textx:=10;
texty:=450;
ster:=VGA; tryb:=VGAHi;initgraph(Ster,Tryb,'C:\TP\BGI'); ClearDevice;
SetTextStyle(DefaultFont, HorizDir, 1);
tekst:='y: 000.0; x: 000.0 '; maxtextheight:=TextHeight(tekst); maxtextwidth:=TextWidth(tekst);
{************************}
odbicia:=7;
Grawitacja:=0;
{************************}
xstep :=((Pi*odbicia)/GetMaxX);
lasty:=0; x:=0; progress:=0;
repeat
if keypressed then koniec:=(readkey=#27);
SetColor(6); rectangle(textx-5,texty-5,textx+MaxTextWidth+5,texty+MaxTextHeight+5); SetFillStyle(0,6);
FloodFill(textx-4,texty-4,6); SetColor(15);
y:= cos(x)*(GetMaxY-(Grawitacja*Progress*(GetMaxY/GetMaxX))); if y<0 then y:=-y; x:= x + xstep;
line(round(progress-1),GetMaxY-round(lasty),round(progress),GetMaxY-round(y));
lasty:=y;
progress:=progress+1;
tekst :='y: '; str(y:4:1,tmp);tekst:=tekst+tmp; tekst:=tekst+'; x: '; str(x:4:1,tmp); tekst:=tekst+tmp;
OutTextXY(textx,texty,tekst);
delay(10);
until koniec or ( progress>=GetMaxX );
repeat until keypressed;
CloseGraph;
end.