Taschenrechner ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Ich hab jetzt endlich weitergemacht <)
Ich hab aber ne "einfache" Frage ^^. Ich möchte es so machen ,dass das Prog. Pi erechnet. Daher meine Frage -> wie rechnet man Pi ?

Gruß Fusselohr
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

also es gibt ja #PI,
aber ich denke, du willst selber eine genaue zahl mit einer bestimmten anzahl an Nachkommastellen haben.
Es gibt ein verfahren, wonach man Pi errechnet, such mal zb bei Wiki.
Es gibt auch Programme, die nichts andere tun.. zb 10.000 Nachkommastellen von Pi errechnen.. Dauert eben nur ein bissel.
Wenn du für deinen Taschenrechner nur die Zahl Pi zur verfügung stellen willst, nehm einfach #PI

edit: Pi für Java:

Code: Alles auswählen

public static double berechne_pi(int tropfenzahl) {
  double pi = 0;
  int innerhalb = 0;
  int gesamt = tropfenzahl;

  while (tropfenzahl > 0) { // generiere Tropfen und addiere je nach Zugehörigkeit
    double dotx = 2 * Math.random() - 1;
    double doty = 2 * Math.random() - 1;

    if (dotx*dotx + doty*doty <= 1) {
      // Punkt liegt innerhalb des Kreises
      innerhalb++;
    } else {
      // Punkt liegt außerhalb des Kreises
    }

    tropfenzahl--;
  }

  pi = 4*(double)innerhalb/gesamt;
  return pi;
}
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Ich hätte halt gerne das der User eingibt wie viel stellen er von pi sehen möchte^^

und irgendwie kapier ich immer noch net wie ich pi ausrechnen soll^^
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

ich habs mal in pb umgeschrieben und etwas verändert

Code: Alles auswählen

#genauigkeit = 10000000
#rand_genauigkeit = 100000
start = ElapsedMilliseconds()
Procedure.d pi(tropfenzahl.l)
  pi.d = 0
  innerhalb.l = 0
  gesamt.l = tropfenzahl
  
  While tropfenzahl > 0
    ; generiere Tropfen und addiere je nach Zugehörigkeit
    dotx.d = 2 * (Random(#rand_genauigkeit)/#rand_genauigkeit) - 1
    doty.d = 2 * (Random(#rand_genauigkeit)/#rand_genauigkeit) - 1
    If (dotx*dotx + doty*doty <= 1) 
      ; Punkt liegt innerhalb des Kreises
      innerhalb+1
    Else
      ; Punkt liegt außerhalb des Kreises
    EndIf
    
    tropfenzahl-1
  Wend
  
  pi = 4*innerhalb/gesamt
  ProcedureReturn pi
EndProcedure

MessageRequester("PI","Pi:"+Chr(9)+StrD(pi(#genauigkeit))+Chr(10)+"Zeit:"+Chr(9)+Str(ElapsedMilliseconds()-start)+" Ms")

Gedanke hinter der Sache:
Man nehme ein Quadrat.
in diesem Quadrat ist ein Viertelkreis
Nun setze man zufällig punkte in dieses Quadrat und man zählt, wie viele im Viertelkreis liegen, und wie viele nicht.
Natürlich ungenau , weil die Punkte ja zufällig gesetzt werden, dafür ist die konstante #genauigkeit, sie bestimmt die anzahl der punkte.
die konstante #rand_genauigkeit ist für die anzahl der Nachkommastellen bei random.
Spiel mal ein bisschen damit rum und gucke, wie die ausgaben aussehen.
Achtung: bei mir (1000MHz) hat das Beispiel oben ca 3 Sekunden gebraucht

Die Genauigkeit ist nicht der Hammer, aber es ist ein Ansatz.
Um genauer zu werden, vielleicht anstatt Kommazahlen, einfach sozusagen pi*1000000 nehmen um zu rechnen und nur zur anzeige das Komma setzen.
Desweiteren nicht die punkte zufällig nehmen, sondern in einem bestimmten Abstand, und somit auch die genauigkeit bestimmen.
Ich hoffe du verstehst was ich meine.
Ich gehe jetzt erstmal off und werde heute abend wieder vorbeischauen.
Zuletzt geändert von a14xerus am 15.04.2007 12:50, insgesamt 1-mal geändert.
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Hmm, bei mir kommt aber jedes mal was anderes :lol: obwohl der code gleich bleibt
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Fusselohr hat geschrieben:Hmm, bei mir kommt aber jedes mal was anderes :lol: obwohl der code gleich bleibt
Liegt am Random
Bei mir kam auch noch nie Pi raus (bis auf die ersten zwei nachkommastellen)
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Kann mir vielleicht einer den kompletten Quellcode mit 100%iger genauigkeit geben. Bin erst in der 8.ten und hatte daher noch kein Pi. Blick überhaupt nimmer durch ^^
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

THX ^^ Jetzt muss ich das nur noch in eine Fensteranwendung umändern stimmts ?
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Ich bin einfach zu blöd-- ich kriegs par tu nich hin die Konsolenanwendung in eine Windowanwendung mit einfacher Stringeingabe, nem "Pi berechnen"-Button und ner Ausgabe als Textbox zu machen---
Falls mir jemand helfen kann ... Ich hätt überhaupt nix dagegen <)
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
Antworten