{ Programm zum Zeichnen von Funktionen }
{***********************************************************}
{**** geschrieben von RenÉ Scholz **** }
{$E+,N-}
uses Graph,crt;
var x,y,h,XF,YF,XS,XE,SW :real;
grdriver, grmode, errcode :integer;
procedure lesen;
begin
ClrScr;
Writeln('X-Faktor = ');readln(XF);
Writeln('Y-Faktor = ');readln(YF);
Writeln('X-Start = ');readln(XS);
Writeln('X-Ende = ');readln(XE);
Writeln('Schrittweite = ');readln(SW);
ClrScr;
XF:=XF*46.7;if XF=0 then XF:=46.7;
YF:=YF*30;if YF=0 then YF:=30;
XS:=XS*XF;if (XS<-359) or (XS=0) then XS:=-359;
XE:=XE*XF;if (XE>359) or (XE=0) then XE:=359;
if SW=0 then SW:=1;
Writeln('X-Faktor = ', XF);
Writeln('Y-Faktor = ', YF);
Writeln('X-Start = ', XS);
Writeln('X-Ende = ', XE);
Writeln('Schrittweite = ', SW);
readln;
end;
procedure Grafik;
begin
grDriver:=Detect;
InitGraph(grDriver,grMode,'');
errCode:=Graphresult;
if errCode <> grOk then writeln
('Graphics ERROR : ',GraphErrorMsg(errCode));
end;
procedure Achsenkreuz;
begin
line(0,174,719,174); { X-Achse }
line(round(359-XF),168,round(359-XF),180); { 1 auf der }
line(round(359+XF),168,round(359+XF),180); { X-Achse }
line(359,0,359,347); { Y-Achse }
line(350,round(174-YF),368,round(174-YF)); { 1 auf der }
line(350,round(174+YF),368,round(174+YF)); { Y-Achse }
end;
procedure zeichnen;
begin
h:=XS;
repeat
h:=h + SW;
x:=h/XF;
y:=sin(x)*(1/x); { Hier Funktion eingeben ! }
y:=y*YF;
PutPixel(round(h+359),round(174-y),1);
until ( h >= XE);
readln;
end;
{**************************************************************************}
begin { Main Program }
lesen;
Grafik;
Achsenkreuz;
zeichnen;
closeGraph;
end.