program pi_kiszamolasa; {$N+E+} { a nagyobb pontoss g miatt hossz£ val¢ssal dolgozunk } uses Crt, Rutin; var pi : extended; n,i : longint; d,jel : char; procedure Leibniz; var elojel : longint; begin WriteXY(20,2,' L e i b n i z m ¢ d s z e r '); Write(n,' tagra'); pi:=0; elojel:=-1; { n darab tagot kisz mol sa ‚s ”sszead sa } for i:=1 to n do begin elojel:=-elojel; pi:=pi+elojel/(2*i-1); end; { a t‚nyleges pi a n‚gyszerese } pi:=pi*4; end; {Leibniz v‚ge} procedure Wallis; begin WriteXY(20,2,' W a l l i s m ¢ d s z e r '); Write(n,' tagra'); pi:=1; { n darab tag sz m¡t sa ‚s szorz sa } for i:=1 to n do pi:=pi*i/(2*i-1)*i/(2*i+1)*4; { a t‚nyleges pi a k‚tszerese } pi:=pi*2 end; { Wallis v‚ge } procedure Euler; begin WriteXY(20,2,' E u l e r m ¢ d s z e r '); Write(n,' tagra'); pi:=0; { n darab tag sz m¡t sa ‚s ”sszead sa } for i:=1 to n do pi:=pi+1/i/i; { a t‚nyleges pi a hatszoros n‚gyzetgy”ke } pi:=Sqrt(pi*6); end; { Euler v‚ge } procedure Vieta; { Evvel sz molja a g‚p is, 30 tagot elegend“ venni } var tag : extended; begin WriteXY(20,2,' V i Š t a m ¢ d s z e r '); Write(n,' tagra'); { az els“ tag a gy”k kett“ } tag:=Sqrt(2); pi:=1; { n darab tag sz m¡t sa ‚s szorz sa } for i:=1 to n do begin pi:=pi*tag/2; tag:=Sqrt(tag+2); end; { a t‚nyleges pi a reciprok k‚tszerese } pi:=2/pi; end; { ViŠta v‚ge } begin repeat ClrScr; WriteXY(20,2,' A pi ‚rt‚k‚nek kisz m¡t sa k”zel¡t‚ssel'); { a men } WriteXY(32,10,'1. Leibniz-sorral'); WriteXY(32,11,'2. Wallis-formul val'); WriteXY(32,12,'3. Euler m¢dszer‚vel'); WriteXY(32,13,'4. ViŠta m¢dszer‚vel'); WriteXY(32,14,'5. Kil‚p‚s'); WriteXY(32,20,'V lasztott pont : '); { csak 1-t“l 5-ig lehet v lasztani } repeat d:=Readkey; until d in ['1'..'5']; Write(d); { ha nem l‚pnk ki } if d<>'5'then begin WriteXY(32,22,'A tagok sz ma : '); LongRead(n); ClrScr; case d of '1' : Leibniz; '2' : Wallis; '3' : Euler; '4' : Vieta; end; WriteXY(15,11,' A pi sz m¡tva : '); Write(pi:2:22); WriteXY(15,13,' A pi pontosan : 3,141592653589793238462643383279'); WriteXY(45,25,'B rmi tov bb...'); jel:=ReadKey; end; until d='5'; end.