(*---------------------------------------------------------------------------
   :Program.    Kurve
   :Author.     Jörg Wesemann
   :Address.    Auf der Heide 10, 2807 Achim - Baden
   :Phone.      (0)4202 / 70658
   :Shortcut.   [jwe]
   :Version.    2.94
   :Date.       23.03.89
   :Copyright.  PD
   :Language.   Modula-II
   :Translator. M2Amiga
   :Imports.    JWELib: Parser, Fastnull-Funktion
   :Update.     none.
   :Contents.   Berechnet ein bestimmtes Integral einer Funktion
   :Remark.     none
---------------------------------------------------------------------------*)



IMPLEMENTATION MODULE integration;

FROM SYSTEM 		IMPORT 	FFP,ADR;
FROM InOut 		IMPORT 	Write,WriteString,WriteLn,OpenOutput,
				CloseOutput;
FROM FFPInOut 		IMPORT 	ReadReal,WriteReal;
FROM startupproc 	IMPORT 	cursorr,crlf,CLS,m,n,nullbuffer,string,center,
				dateiabfrage,intf,fragedatei,wptr;
FROM intervall 		IMPORT 	kleinintervall;
FROM JWELib 		IMPORT 	parse,fastnull;    
FROM Strings 		IMPORT 	Length;
FROM menu 		IMPORT 	wartemenu;
FROM Intuition		IMPORT	WindowToFront;




PROCEDURE integration;

  VAR
    a,b,g,err,i,lasti 	: FFP;
    k		     	: CARDINAL;
    zuviele		: BOOLEAN;
    
BEGIN
  
  nullbuffer[1]:="0.0";
  nullbuffer[2]:= "0.001";
  kleinintervall(nullbuffer,ADR("INTEGRATION - Intervall"));
  a:= parse(nullbuffer[1],0.0);
  g:= parse(nullbuffer[2],0.0);
  b:= parse(nullbuffer[3],0.0);
  WindowToFront(wptr);
  Write(CLS);
  IF dateiabfrage THEN
    fragedatei();
  END;  
  crlf(2);
  center("INTEGRATION"); WriteLn;
  center("-----------"); crlf(2);
  center("von"); crlf(2);
  cursorr(20+(31-Length(string)) DIV 2 );
  WriteString("f(x) = ");
  WriteString(string); crlf(3);
  cursorr(23); WriteString("Xmin: "); WriteReal(a,m,n); cursorr(5);
  WriteString("Xmax: "); WriteReal(b,m,n); crlf(3);
  i:= intf(a,b,g,zuviele);
  IF zuviele THEN
    WriteLn;
    center("Maximale Anzahl der Iterationen überschritten");
  ELSE
    cursorr(22); WriteString("Integral           I = "); WriteReal(i,m,n);
    WriteLn; cursorr(22);
    WriteString("absoluter Fehler  dI = "); WriteReal(err,m,n);
  END;
  WriteLn;
  CloseOutput;
  crlf(2); cursorr(22);
  WriteString("Bitte 'RETURN' drücken für MENU ");
  wartemenu;

END integration;


END integration.
