Hoi,
ich schreib grade eine "Algorithmen" Bibliothek, mit einer grafischen Benutzeroberfläche.
Ich hab schon die Berechnung des ggTs von 2 Zahlen über den Euklid'schen Algorithmus und die darauf basierende Berechnung des kgVs.
Jetzt schreib ich mehrere Verfahren zur Berechnung von Pi.
-> 1. Monte-Carlo-Verfahren.
Ich berechne dieses folgendermaßen:
Delphi-Quellcode:
function pi_montecarlo(n : int64):double; {Ermittlung von Pi mit der Monte Carlo Methode}
var
x,sy:double;
i: int64;
begin
sy:=0;
for i:= 0 to n-1 do
begin
x:=Random;
sy:=sy+sqrt(1-sqr(x));
end;
result:=(4*sy/n);
end;
und geb Pi mit
Delphi-Quellcode:
label5.caption:=floattostr(pi_montecarlo(n));
aus...
Warum bekomm ich dann immer Ungültige Gleitkommaoperation??
Unter Turbo Pascal funktioniert dieselbe Formel einwandfrei!
Delphi-Quellcode:
program MonteCarloRechteck;
uses crt;
var
x: double; { Koordinaten }
i,n: Longint;
sy: double; { Summe der Fkt-Werte } { Anzahl der Druchläufe }
begin
clrscr;
writeln('n : ');
readln(n);
Randomize;
sy := 0;
for i := 0 to n-1 do begin
x := Random;
sy := sy + sqrt(1-sqr(x)) { y ausrechnen und addieren zu sy }
end;
WriteLn(4*sy/n); { ueber Flaecheninhalt in pi umrechnen }
Readln;
end.
mfg Pyromane
//Edit: es scheint, dass n immer 0 ist, da nach der Abfrage
Delphi-Quellcode:
if n=0 then result:=0
else result:=4*sy/n
immer 0 zur+ckgegeben wird. Das Erklärt auch die Ungültige Gleitkommaoperation (
Division durch 0)^^