Program Kozelites; Uses AritUnit,Raciona5,Crt,Dos; {$I Valos.Inc} Var x : ValosSzam; iterszam : Integer; pont : Integer; c : Char; { A kozelito rutinok: } Procedure Gyok2_Newton(Var gyok: Tort); Var x,y,z: Tort; Begin iterszam:=0; gyok:=EgyTort; repeat TortOszt(gyok,KettoTort,y); TortOszt(EgyTort,gyok,z); TortOsszead(y,z,x); gyok:=x; inc(iterszam); until iterszam=7; End; { GyokN_Newton } Procedure Gyokvonas2(Var vx: ValosSzam); Var gyok: Tort; Begin Gyok2_Newton(gyok); Konv_RacVal(vx,gyok,MaxPontossag); End; { GyokvonasN } Procedure Gyok2_Pell(Var vx: ValosSzam); Var p,q,r,s: EgeszSzam; sv: Tort; Begin iterszam:=0; Konv_StringEgesz(p,'39202'); Konv_StringEgesz(q,'27720'); repeat Szoroz(p,q,r); q:=r; Szoroz(p,p,s); Kivon(s,ketto,p); inc(iterszam); until iterszam=5; Egeszbol_Tort(p,q,sv); Konv_RacVal(vx,sv,MaxPontossag); End; { Gyok2_Pell } Procedure Pi_wallis(Var vx:ValosSzam); Var ps,ptl,ps2,ptl2: EgeszSzam; sv,st: Tort; begin ptl:=egy; ps:=nulla; sv:=EgyTort; iterszam:=0; repeat case (iterszam)mod(2) of 1 : begin Osszead(ptl,ketto,ptl2); ptl:=ptl2; end; 0 : begin Osszead(ps,ketto,ps2); ps:=ps2; end; end; Egeszbol_Tort(ps,ptl,st); TortSzoroz(sv,st,sv); inc(iterszam); until iterszam=250; TortSzoroz(sv,KettoTort,sv); Konv_RacVal(vx,sv,MaxPontossag); end; { Pi kozelitesei Arctg-sel } Procedure hatvanyoz(tx:Tort; k:integer;var hatv:Tort); var i:integer; begin hatv:=EgyTort; for i:=1 to k do TortSzoroz(hatv,tx,hatv); end; Procedure Arctg_kozelit(tx:Tort; iterszam:integer; var sx:Tort); var sv,st,hatv,hatv2,egt:Tort; eg,eg2:EgeszSzam; k,it:integer; begin it:=0; sv:=NullaTort; eg:=egy; k:=1; repeat hatvanyoz(tx,k,hatv); case (it)mod(2) of 1 : begin TortKivon(NullaTort,hatv,hatv2); hatv:=hatv2; end; end; Egeszbol_Tort(eg,egy,egt); TortOszt(hatv,egt,st); TortOsszead(st,sv,sx); sv:=sx; inc(it); Osszead(eg,ketto,eg2); eg:=eg2; k:=k+2; until it=iterszam; end; Procedure Pi_arctg1(var vx:ValosSzam); var rx,sv:Tort; begin iterszam:=120; Arctg_kozelit(egytort,iterszam,rx); TortSzoroz(NegyTort,rx,sv); Konv_RacVal(vx,sv,MaxPontossag); end; Procedure Pi_arctg2(var vx:ValosSzam); var t1,t2,t3: Tort; begin iterszam:=20; Arctg_kozelit(heted,iterszam,t1); Arctg_kozelit(haromhetvenkilenced,iterszam,t2); TortSzoroz(t1,husztort,t3); TortSzoroz(t2,nyolctort,t1); TortOsszead(t1,t3,t2); Konv_RacVal(vx,t2,MaxPontossag); end; Procedure E_hatvany(var vx:Valosszam); var ekoz,sv: Tort; kit,i: integer; begin TortOsszead(egytort,fel,ekoz); iterszam:=1; repeat TortOsszead(egytort,ekoz,sv); TortOszt(sv,Kettotort,ekoz); inc(iterszam); until iterszam=7; kit:=1; for i:=1 to iterszam do begin kit:=kit*2; end; Hatvanyoz(ekoz,kit,sv); Konv_RacVal(vx,sv,MaxPontossag); end; Begin Clrscr; KonstansLetrehozas; { û2 k”zel¡t‚s, a Newton-m¢dszerrel } { Writeln('Gyok-2 kozelitese (Pascal:',sqrt(2),')'); Writeln; Writeln('Newton-m¢dszerrel:'); Gyokvonas2(x); Kiir(x,72); Writeln(' Iter ci¢sz m:',iterszam:4); Writeln('-----------------------'); { û2 k”zel¡t‚s, a Pell-egyenlettel } {Writeln('Pell-egyenlettel:'); Gyok2_Pell(x); Kiir(x,72); Writeln('Iter ci¢sz m:',iterszam:4); Writeln; Writeln('-----------------------'); Writeln('Pi kozelitese (Pascal:',pi,')'); Writeln; Writeln('Pi_wallis:'); Pi_wallis(x); Kiir(x,70); Writeln('Iter ci¢sz m:',iterszam:4); Writeln('-----------------------'); Writeln('Pi_arctg1:'); Pi_arctg1(x); Kiir(x,70); Writeln('Iter ci¢sz m:',iterszam:4); Writeln('-----------------------'); Writeln('Pi_arctg2:'); Pi_arctg2(x); Kiir(x,70); Writeln('Iter ci¢sz m:',iterszam:4);} Writeln('e kozelitese'); Writeln('Pascal:',exp(1.0)); E_hatvany(x); Kiir(x,70); c:=ReadKey; End.