program RK2;
uses printer;
var
  X,Y,H,R1,R2,X0,Y0,V,DELTAX,YA,R :real;
  N,I,J :integer;
  NOVO :string[1];
  TITULO :string[70];
function FUNCAO(X:real;Y:real) :real;
begin
  FUNCAO := X + Y
end;
begin
  writeln('Indique a equacao diferencial a ser resolvida ');
  readln(TITULO);writeln(Lst,TITULO);
  writeln('Forneca X0 , Y0 e o PASSO ');
  write('X0 = ');readln(X0);
  write('Y0 = ');readln(Y0);
  write('PASSO  = ');readln(DELTAX);
repeat
  X := X0; Y := Y0;
  write(Lst,'X0 = ',X0:10:6,'    Y0 = ',Y0:10:6);
  writeln(' Forneca o numero de divisoes do PASSO');
  write(' N  = ');readln(N);H := DELTAX / N;
  writeln(Lst,' N = ',N:4);
  for J := 1 to 10 do begin
  for I := 1 to N do begin
    R1 := FUNCAO(X,Y); X := X + H; YA := Y + R1 * H; R2 := FUNCAO(X,YA);
    R := (R1+R2)/2; Y := Y + R * H;
    V:= 2 * exp(X) - X - 1;
                      end;
  writeln(Lst,'X = ',X:10:6,'     Y = ',Y:10:6,'     YC = ',V:10:6);
                       end;
    write('Tecle S se deseja novo calculo ');readln(NOVO);writeln(Lst,' ');
until NOVO <> 'S'
end.
{ fim do RK2 }


