uses crt;
var a,b,integral :real;
    n            :word;
function Funk( x:real):real;
begin
 funk:=4/(x*x+1);
end;

procedure Anfang;
begin
 clrscr;
 writeln('  *** Numerische Integration ***');
 writeln('  Intervallgrenzen  A , B            =  ');readln(a,b);
 writeln('  Anzahl der Intervallteilungen      =  ');readln(n);

 clrscr;
 writeln('  Intervallgrenzen  A , B            =  ',round(a),'   ',round(b));
 writeln('  Anzahl der Intervallteilungen      =  ',n);
end;

procedure Main;
var s,h,i  :real;
    k      :word;
begin
 if n=0   then n:=1000;
 if (a>b) then    begin
		    h:=a;
		    a:=b;
		    b:=h;
		  end;
 h:=(b-a)/n;
 i:=funk(a) + Funk(b);
 s:=0;
 K:=1;
 repeat
    s:=s + funk(a+k*h);
    k:=k+1;
 until (k>=n);
integral:=(i+s+s)*h/2;
end;

procedure soundes;
var a :byte;
begin
 for a:=2 to 250 do
   begin
    sound(a+a+a+10);
    delay((10 div a)+7);
    nosound;
   end;
 nosound;
end;

{***************************************************************************}

begin
 Anfang;
 main;
 writeln(#10,'  Das Integral hat den Wert :   ',integral);
 soundes;
 readln;
end.