![]() |
Division by Zero?!
Hi,
muss für die Schule ein Programm für die Annäherung der Zahl Pi schreiben. Soll nach dem Gregory Verfahren funktionieren! Zitat:
Delphi-Quellcode:
program gregory;
var a,b,d,e: real; c,f,i: integer; function Um(var la,lb:real):real; begin la:=(2*la*lb)/(la+lb); end; function Ein(var sa,sb:real):real; begin sa:=sqrt(sb*(2*sa*sb)/(sa+sb)); end; begin a:=3; b:=2*sqrt(3); writeln('Eingabe Genauigkeit in 10(hoch)x'); readln(c); for i:=1 to c do f:=f*10; repeat d:=(Um(b,a))*f; e:=(Ein(b,a))*f; d:=round(e); e:=round(e); writeln((d/f)); writeln(e/f); until d=e; readln; end. |
Re: Division by Zero?!
f ist am anfang 0.
Dann setzt du es nie. "verändert" wird es erst bei der schleife, wo du es mit 10 multiplizierst (0*10=0) und dann teilst du so einiges durch f ;) abhilfe würde ein f:=1; ziemlich am Anfang schaffen ;) |
Re: Division by Zero?!
Oh stimmt!
Dank dir! Aber dann nächstes Problem:
Delphi-Quellcode:
Funktioniert zwar sieht aber überhaupt nicht nach Pi aus!
program gregory;
var a,b,d,e: real; f,i: integer; c:longint; function Um(var la,lb:real):real; begin la:=(2*la*lb)/(la+lb); end; function Ein(var sa,sb:real):real; begin sa:=sqrt(sb*(2*sa*sb)/(sa+sb)); end; begin f:=1; a:=3; b:=2*sqrt(3); writeln('Eingabe Genauigkeit in 10(hoch)x'); readln(c); for i:=1 to c do f:=f*10; repeat d:=(Um(b,a))*f; e:=(Ein(b,a))*f; d:=round(e); e:=round(e); writeln((d/f)); writeln(e/f); until d=e; readln; end. Und wenn ich eine Zahl über 9 eingebe kommt wieder: Zitat:
störtbecker |
Re: Division by Zero?!
kann es sein das bei c=9
f aus dem Wertebereich fliegt i=1 f:=1*10 i=2 f:=10*10 i=3 f:=100 * 10 i=4 f:= 10 * 1000 i=5 f:= 10 * 10000 i=6 f:= 10 * 100000 i=7 f:= 10 * 1000000 .... Grüße Klaus |
Re: Division by Zero?!
ausserdem schreibst du:
Delphi-Quellcode:
sicher das es nicht
d:=round(e);
e:=round(e);
Delphi-Quellcode:
sein soll?
d:=round(d);
e:=round(e); |
Re: Division by Zero?!
Delphi-Quellcode:
nicht getestet.
pi_1:=0;
For i:=1 to n do begin if i mod 2 = 0 then pi_1:=pi_1+(1/(2*n-1)) else pi_1:=pi_1-(1/2*n-1)) end; pi_2:=1/(2*n+1) pi_x:=4*(pi_1+pi_2) frei nach ![]() Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz