Kreiszahl Pi



  • hey leute ich hab eine Aufgabe die mich vor ein problem stellt

    Schreiben Sie ein C-Programm, welches das beschriebene Verfahren zur n¨aherungsweisen Berechnung der
    Kreiszahl  umsetzt. W¨ahlen Sie der Einfachheit halber ein Quadrat der Kantenl¨ange Eins, auf dem eine
    Viertelkreisscheibe mit Radius Eins liegt. Durch Einbinden der stdlib.h steht Ihnen die Funktion
    int rand(void) zur Verf¨ugung, die mit jedem Aufruf eine ganzzahlige Pseudozufallszahl zwischen 0
    und RAND MAX zur¨uckliefert. Die Konstante RAND MAX ist ebenfalls in stdlib.h definiert und hat meist
    denWert 231􀀀1. Die x-Koordinate eines Zuckerstreusels als float-Wert mit 0  x < 1 ergibt sich durch:
    x = (float) rand() / (float) RAND MAX;
    Analog l¨asst sich auch eine (pseudo)zuf¨allige y-Koordinate ermitteln. x- und y-Koordinate definieren zusammen
    ein Zuckerstreusel, der auf das Blech f¨allt. F¨ur Zuckerstreusel, die in den Viertelkreis mit Radius 1
    gefallen sind, gilt: x2 + y2  1
    Gestalten Sie Ihr Programm so, dass insgesamt 1000000 Streusel fallen und nach jeweils 2500 gefallenen
    Streuseln die bisher ermittelte N¨aherung f¨ur  ausgegeben wird.

    die Annährung kriege ich hin ich weiß leider nur nicht wie man das einbindet das ein Ergebnis nach 2500 Streuseln ausgegeben wird

    Hier mein Programm:

    # include <stdio.h>
    # include <stdlib.h>
    
    int main()
    {
        float x,y,n;
        int viertelkreis = 0, quadrat = 0;
    
        while (quadrat < 1000000)
        {
        /*Streusel erzeugen und ins Quadrat fallen lassen*/
    
           x = (float) rand () / (float) RAND_MAX;
           y = (float) rand () / (float) RAND_MAX;
    
        /*Streusel im Viertelkreis?*/
    
           if (x*x+y*y <= 1)
           {
               viertelkreis++;
           }
           quadrat++;
    
           printf("\n Pi = %f \n", 4.0*(float)viertelkreis/(float)quadrat);
        }
        return 0;
    }
    

    Ich hoffe ihr könnt mir weiterhelfen...



  • if(quadrat % 2500 == 0) //Wenn quadrat ohne Rest durch 2500 teilbar ist
              printf("\n Pi = %f \n", 4.0*(float)viertelkreis/(float)quadrat);
    


  • danke für die hilfe...

    jetzt funktioniert alles...



  • @proggn: Vielleicht haettest du dir mehr Muehe geben sollen. Die Aufgabe einfach per CopyPaste aus einem Pdf/Ps-Dokument herauskopieren, versaut sehr vieles, z.B. meinen Antrieb zu antworten.


Anmelden zum Antworten