program TRAPEZIO;
uses crt,printer;
var
  I,N :integer;
  X,SOMA,H,SOMA2,DELTA,A,B,ERRO :real;
  NOVO :string[1];
  TITULO :string[70];
function FUNCAO(X:real):real;
begin
  FUNCAO := exp(X)
end;
begin
  clrscr;
  writeln('Integracao Numerica pelo metodo dos Trapezios');
  writeln('Indique a seguir qual a integral a ser calculada ');
  readln(TITULO);
  writeln(Lst,#12,'Integracao Numerica pelo metodo dos Trapezios');
  writeln(Lst,TITULO);writeln(Lst,' ');
  writeln('Forneca A e B para calculo da integral de A ate B ');
  write(' A = ');
  readln(A);
  write(' B = ');
  readln(B);
 repeat
  writeln('Forneca o numero de divisoes do intervalo AB ');
  write(' N = ');
  readln(N);
  H := ( B - A ) / N; X := A; SOMA := FUNCAO(A);SOMA2 := 0;
  for I := 1 to N do begin
      X := X+H;SOMA2 := SOMA2 + FUNCAO(X)
                     end;
  SOMA := (SOMA + 2 * SOMA2 - FUNCAO(X)) * H / 2;
  ERRO := 1.7182818284590 - SOMA;
  writeln(Lst,'Valor da integral com ',N:5,' divisoes e de ',SOMA:14:10,
    ' erro de ',ERRO:14:10);
  writeln(' ');
  write('Tecle S se deseja novo calculo ');
  readln(NOVO);
 until NOVO <> 'S'
end. { fim do TRAPEZIO }

