esercitazione con turbo pascal v.5.7

program bise4c;
(* calcolo radici equazione con metodo bisezione STAMPA su carta *)

 

program bise4c;
(* calcolo radici equazione con metodo bisezione STAMPA su carta *)

uses crt,printer;
var A,B,MEDIO,X,Y: real;
    k,n:integer;

function f(X: real): real;
 begin
 (* scrivere la funzione che interessa e racchiudere altre *)
  f := X*X*X*X-7*X*X*X+2*X*X-100*X+610
 (* prova sinistro 4 destro 5 bisezioni 10 *)
 (*    f:=x*x*x-9*x+1 *)
 (* prova sinistro -4 destro -3 bisezioni 20 *)
 end;

procedure legge_dati;

begin
  repeat
    gotoxy (25,13); write ('Estremo sinistro: '); read (A);
    gotoxy (25,14); write ('Estremo destro: ');read(B);
  until f(A)*f(B) < 0; {si accettano solo valori discordi di f(x)}
    gotoxy(25,15);write('numero bisezioni:');readln(n);
end;

procedure calcola (Es,Ed: real);
begin
  for k:=1 to n do
  begin
  MEDIO := (Es+Ed)/2;

  if f(Es)*f(MEDIO) <= 0 then

             Ed := MEDIO
  else
             Es := MEDIO;

  write(Lst,'Es.: ', Es :12:8);
  write(Lst,'  Ed.:',Ed :12:8);
  writeln(Lst,'  medio:',medio:12:8);
  write(Lst,'Fs.:',f(Es):12:8);
  write(Lst,'   Fd   ',f(Ed):12:8);
  writeln(Lst,'   Fm  ',f(medio):12:8);
  writeln(Lst,'-----------------------------------------');
  (* readln;*)     (*  eliminabile *)
  write('Es.: ', Es :12:8);
  write('  Ed.:',Ed :12:8);
  writeln('  medio:',medio:12:8);
  write('Fs.:',f(Es):12:8);
  write('   Fd   ',f(Ed):12:8);
  writeln('   Fm  ',f(medio):12:8);
  writeln('-----------------------------------------');
  (* readln;*)     (*  eliminabile *)
end;
  writeln(Lst,'radice approssimata:',medio:0:8);
  writeln('radice approssimata:',medio:0:8);
end;

begin
 clrscr;
 legge_dati;
 clrscr;
 writeln('A=              ',A:5:6,'     B=           ', B :12:6);
 calcola (A,B);
 writeln('premi enter');
 readln;
end.