Zahl Pi berechnen (Delphi)

TylerDurden

New member
28 Mai 2008
4
0
Hallo Leute!

Ich soll mit Delphi die zahl Pi berechnen und zwar folgend: Ich soll in Delphi einen Viertelkreis zeichnen und dann zufällige Punkte von 1-10 schießen. Die Punkte die innerhalb bzw außerhalb des Kreises liegen sollen zugleich auf der Seite mit einem Zähler angezeigt werden. Auch die insgesamten Schüsse sollen angezeigt werden.
Die Anzahl der Punkte die dann innerhalb des Kreises liegen müssen in die Flächenformel des Kreises eingesetzt werden und daraus soll dann Pi berechnet werden.

Da ich ein totaler Anfänger bin, bitte ich euch mir dies vielleicht "idiotensicher" zu erklären.

Danke im Voraus : )
 
Soll das rein analytisch oder grafisch gemacht werden?
Wie sind deine Ansätze? Woran hapert es?
 
Es soll graphisch gemacht werden. Ich habe keine Ahnung was ich überhaupt eingeben soll um graphisch zu programmieren :-? auch wie ich die zähler analog dazu schalten soll weiß ich nicht. :(
 
Hi,
Ich glaub das musste ich auch ma in Informatik macvhen. Ich seh ma nach, ob ichs noch finde ...

Edit: ne, sry, hab das alles nich mehr.
 
Zuletzt bearbeitet:
Ich hab das zwar noch nicht graphisch gemacht, haben es in der Schule aber mal so durchgerechnet. Ich würde dir raten, dir sozusagen ein Koordienaten System aufzubauen. Da setzt du deinen Viertelkreis rein.

Dann schreibst du dir eine Funktion, die dir Koordinaten im Bereich von 0-1 gibt. also Kommawerte, oder du setzt den Radius deines Kreises auf 100 und dann eben von 0-100. Das jeweils für die X und die y Komponente.

Von diesen Komponenten lässt du dann den Abstand zu (0|0) berechnen. Wurzel ( (x-Komp)^2 + (y-Komp)^2) Wenn das größer als 100 ist, dann liegt der Punkt außerhalb wenn kleiner oder gleich dann in bzw auf dem Kreis. Die Funktion kannst du dann aus ner Schleife ausführen lassen, jemandem wieviel Punkte du halt gerne hättest. Nachher teilst du dann einfach die Punkte im Kreis durch die Punkte außerhalb des Kreises, dann solltest du bei genug Messwerten annähernd auf 3,14 kommen.

Graphisch müsstest du es dann so machen, dass du dir ein Bild machst, und dann eben Punkte auf dieses Bild setzt... die Koordinaten hast du ja zufällig auswählen lassen.

Das ist so der Gedanke davon. In Code umsetzen musst dus natürlich noch selber, kann Delphi leider nicht mehr (Schule ist lange her)

Gruß QuArK007
 
Ich kann zwar auch kein Delphi, aber ich kann Dir verraten, dass google Dir unter dem Stichwort "Monte Carlo Verfahren" immens weiterhelfen könnte. ;)
 
Danke..Ich hab nur leider keine ahnung wie ich den code schreiben soll..vielleicht kennt jemand ja eine seite die solche graphischen Programmierungen aufzeigt oder vielleicht hat jemand noch ein file zu Hause?
 
sagt dir Msum was oder benutzt ihr es in der Schule??

Ist eine ich sage mal mehr oder weniger hilfreiche Klassensammlung von funktionen...
Sie deutscht halt übelst ein bietet dir allerdings ne Grafische Fläche sowie einen Stift zum drin rum malen...

einfacher gehts so:

Du erstellst dir nen neues Formular mit einer Fix größe... dieses Formular hat standardmäßig nen Attribut das sich Canvas schimpft. Da drunter findest du alles was du zum zeichnen benötigst. Noch nen bissl Gehirnschmalz und Schweiß rein stecken dann gehts... hab das Monte Carlo Verfahren nie gehabt.. wir haben allerdings damals unter gleichen vorrausetzungen Apfelmänchen etc zeichnen lassen...

mfg daniel

EDIT: habe leider gerade formatiert und noch kein delphi drauf... suche dir aber gerne mal was raus, wenn ich noch was von damals habe...

spontan habe ich gerade das gefunden da wird canvas drin benutzt... vllt hilfts...
Code:
procedure TTI.Timer1Timer(Sender: TObject);
begin
    case random(15) of
      0 : Bitmap1.Canvas.Brush.Color := clRed;
      1 : Bitmap1.Canvas.Brush.Color := clWhite;
      2 : Bitmap1.Canvas.Brush.Color := clGreen;
      3 : Bitmap1.Canvas.Brush.Color := clblue;
      4 : Bitmap1.Canvas.Brush.Color := clTeal;
      5 : Bitmap1.Canvas.Brush.Color := clMaroon;
      6 : Bitmap1.Canvas.Brush.Color := clOlive;
      7 : Bitmap1.Canvas.Brush.Color := clPurple;
      8 : Bitmap1.Canvas.Brush.Color := clLime;
      9 : Bitmap1.Canvas.Brush.Color := clSilver;
      10 : Bitmap1.Canvas.Brush.Color := clFuchsia;
      11 : Bitmap1.Canvas.Brush.Color := clSkyblue;
      12 : Bitmap1.Canvas.Brush.Color := clAqua;
      13 : Bitmap1.Canvas.Brush.Color := clMoneyGreen;
      14 : Bitmap1.Canvas.Brush.Color := clInfoBk;
      15 : Bitmap1.Canvas.Brush.Color := clMenuHighlight;
      end;
    case random(15) of
      0 : Bitmap1.Canvas.Pen.Color := clRed;
      1 : Bitmap1.Canvas.Pen.Color := clWhite;
      2 : Bitmap1.Canvas.Pen.Color := clGreen;
      3 : Bitmap1.Canvas.Pen.Color := clblue;
      4 : Bitmap1.Canvas.Pen.Color := clTeal;
      5 : Bitmap1.Canvas.Pen.Color := clMaroon;
      6 : Bitmap1.Canvas.Pen.Color := clOlive;
      7 : Bitmap1.Canvas.Pen.Color := clPurple;
      8 : Bitmap1.Canvas.Pen.Color := clLime;
      9 : Bitmap1.Canvas.Pen.Color := clSilver;
      10 : Bitmap1.Canvas.Pen.Color := clFuchsia;
      11 : Bitmap1.Canvas.Pen.Color := clSkyblue;
      12 : Bitmap1.Canvas.Pen.Color := clAqua;
      13 : Bitmap1.Canvas.Pen.Color := clMoneyGreen;
      14 : Bitmap1.Canvas.Pen.Color := clInfoBk;
      15 : Bitmap1.Canvas.Pen.Color := clMenuHighlight;
      end;
      Bitmap1.Canvas.Rectangle(0,0,ClientWidth,ClientHeight);
      Bitmap1.Canvas.Ellipse(0 + (4*random(50)),0 + (4*random(50)),ClientWidth - (4*random(50)),ClientHeight- (4*random(50)));
end;

end.

frag mich bitte nicht was das programm macht! Lag in meinem Infoordner vonner schule...
 
Zuletzt bearbeitet:
Danke almdudler..vielleicht hat sonst noch wer was am pc? wäre sehr nett..da ich das fürs abi brauche :-?
 
also das prinzip hast schon verstanden? wenn es nur an dem Code liegt, dann meld dich mal im ICQ dann helfe ich dir...

MFG

EDIT: wenn es tatsächlich nur am Code liegt, würd ich allerdings auch deinem Lehrer mal nen haufen auf den tisch setzen:ugly: kann ja eig nich sein, dass du ne aufgabe machen musst die du nicht lösen kannst...
 
natürlich gibt es das. Das war bei uns auch ganz normal. Der Lehrer konnte das selber nicht mal, also haben wir uns die Funktionen aus dem Internet suchen müssen. Das Verständnis für die Sprache mussten wir mitbringen, anders wäre man durch den Kurs nicht durchgekommen.

Ich kann mir auch nicht vorstellen, dass TylerDurden es nicht schafft das zu machen. Wenn man will, dann schafft man das auch und bei Fehlern kann man ja fragen wenn google die nicht beantworten kann. Aber einfach ein fertiges Programm abzugeben, das man noch nicht mal selber geschrieben hat, grenzt an Betrug.