home *** CD-ROM | disk | FTP | other *** search
- {---------------------------------------------------------------------------}
- { fkplot1.pas }
-
- { Prozedur zur Eingabe der Funktion sowie Festlegung der Grenzen, Achsen,
- Skalierung und Anzahl zu berechnenter Stuetzstellen }
-
- PROCEDURE Eingabe;
-
- VAR q1 : str100;
- br, df : REAL;
- i, j : INTEGER;
- ch : CHAR;
-
- BEGIN
- FOR i := 1 TO 100 DO q1[i]:=' '; { Festlegung der Funktion }
- FOR i := 1 TO 255 DO q2[i]:=' ';
- WriteLn('Bitte geben Sie die Funktionsvorschrift ein:');
- Write('f(x)=');
- ReadLn(q1);
- q2 := translat1(q1);
- q2 := translat2(q2);
-
- WriteLn; { Festlegung der Grenzen }
- WriteLn('Bitte geben Sie nun die Grenzen fuer x und y ein:');
- Write('x-min=');
- Read(xmin);
- Write(' x-max=');
- ReadLn(xmax);
- Write('y-min=');
- Read(ymin);
- Write(' y-max=');
- ReadLn(ymax);
-
- REPEAT { Festlegung der Achsen }
- WriteLn;
- Write('Waehlen Sie E)igene Wahl der Achsen');
- Write(' oder C)omputer waehlt Achsen): ');
- Read(Kbd, ch); { Zeichen von Tastatur ohne Echo lesen }
- ch := UpCase(ch);
- UNTIL ch IN ['E','C'];
- WriteLn(ch);
- IF ch = 'E' THEN
- BEGIN
- WriteLn;
- REPEAT
- Write('y-Achse an der Stelle x=');
- ReadLn(yax);
- Write('x-Achse an der Stelle y=');
- ReadLn(xax);
- UNTIL (xmin<=xax) AND (xax<=xmax) AND (ymin<=yax) AND (yax<=ymax);
- END
- ELSE
- BEGIN
- df := abs(xmin);
- IF df < abs(xmax) THEN df := abs(xmax);
- i := 2+Trunc(Ln(df)/Ln(10));
- REPEAT
- i := i-1;
- br := Exp(i*Ln(10));
- UNTIL Round(xmax/br+0.499999) > Round(xmin/br+0.499999);
- yax := Round(xmin/br+0.499999)*br;
- df := abs(ymin);
- IF df < abs(ymax) THEN df := abs(ymax);
- i := 2+Trunc(Ln(df)/Ln(10));
- REPEAT
- i := i-1;
- br := Exp(i*Ln(10));
- UNTIL Round(ymax/br+0.499999) > Round(ymin/br+0.499999);
- xax := Round(ymin/br+0.499999)*br;
- WriteLn;
- WriteLn('y-Achse an der Stelle x=',yax);
- WriteLn('x-Achse an der Stelle y=',xax);
- END;
-
- WriteLn; { Festlegung der Skalierung }
- REPEAT
- WriteLn;
- Write('x-Skalierung im Abstand dx=');
- ReadLn(xsc);
- Write('y-Skalierung im Abstand dy=');
- ReadLn(ysc);
- UNTIL (xmax-xmin<160*xsc) AND (ymax-ymin<100*ysc);
-
- WriteLn;
- Write('Anzahl zu berechnenter Stuetzstellen: ');
- ReadLn(s);
-
- WriteLn;
- Write('Druecken Sie eine beliebige Taste zum Ausdruck der Funktion!');
- Read(Kbd, ch);
- END;