Übung 7 Aufgabe 3

Elektrotechnik und Informationstechnik
Verfügbare Informationen zu "Übung 7 Aufgabe 3"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: dave - m.imig
  • Forum: Elektrotechnik und Informationstechnik
  • Forenbeschreibung: ... 1. Semester an der FH Koblenz
  • aus dem Unterforum: Informatik
  • Antworten: 2
  • Forum gestartet am: Freitag 03.11.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Übung 7 Aufgabe 3
  • Letzte Antwort: vor 17 Jahren, 4 Monaten, 15 Tagen, 13 Stunden, 55 Minuten
  • Alle Beiträge und Antworten zu "Übung 7 Aufgabe 3"

    Re: Übung 7 Aufgabe 3

    dave - 13.12.2006, 22:34

    Übung 7 Aufgabe 3
    Hier die Lösung zur Aufgabe 3:

    Code: #include <iostream>
    #include <math.h>
    using namespace std;

    int imKreis(double x, double y)
    {
       
       if((sqrt(pow(x,2)+pow(y,2)))<=1.0) return 1; //Wenn (x² + y²)=1² gilt ist der Punkt im Einheitskreis
       else return 0;   
       
    }


    int main ()
    {
       double x,y,naeherungPI;
       int wiederholungen, anzahlPunkteImKreis = 0;


       cout << "Wieviele Durchläufe soll es geben? Geben Sie eine Zahl ein: ";
       cin >> wiederholungen;
       
    for (int i=1; i<=wiederholungen; i++)
    {

       x=( (double)rand() /  ((double)(RAND_MAX)+(double)(1)) );
       
       y=( (double)rand() /  ((double)(RAND_MAX)+(double)(1)) );

       if (imKreis(x,y)==1) anzahlPunkteImKreis++;
       
    }


    naeherungPI=((double)anzahlPunkteImKreis / (double)wiederholungen);
    // (double) muss angegeben werden, da sonnst int Division

    cout << "Die Naeherung an PI/4 ist: " << naeherungPI << endl;
    cout << "Zum Vergleich PI/4 ist: " << 3.14159265/4 << endl << endl;


    cout << "Die Naeherung an PI ist: " << naeherungPI*4 << endl;
    cout << "Zum Vergleich PI ist: " << 3.14159265 << endl << endl;

    cin.ignore();
    cin.ignore();

    return 0;

    }

    Am kniffligsten fand ich an der Aufgabe das man sich was überlegen musste wie man die Ausgabe von rand() in den Bereich von 0 bis 1 bekommt. Mit (rand()%1000)/1000 hab ich es zuerst versucht ... gab zwar kleine werte aber klappte nit ... da die zahlen nicht mehr zufällig. Hab en bissel im Internet gelesen und herausgefunden das % Gift für Zufallsgeneratoren ist. RAND_MAX ist übrigens die Konstante die angibt bis zu welchem Maximal wert der Zufallsgenerator Zahlen generiert. Diese Konstante ist laut ANSI C in math.h definiert ... hätte dort natürlich auch nachaschauen können wie der Wert absolut aussieht ---> hatte ich aber keine Lust :-D



    Re: Übung 7 Aufgabe 3

    m.imig - 14.12.2006, 22:56


    Kleine Kritik:
    - keine alten Header verwenden (*.h) -> #include <cmath>
    - bei der Funktion "imKreis(...)" kann man noch minimal optimieren:
    Code:
    bool imKreis(double x, double y) {
        return((sqrt(pow(x,2)+pow(y,2)))<=1.0);
    }


    die Abfrage dazu lautet dann nur noch
    Code:
    if( imKreis(x, y) ) {...}

    und in hässlich :> :
    Code:
    anzahlPunkteImKreis += imKreis(x, y) ? 1 : 0;

    - bevor du PI zwei mal via Hand eintippst, lieber ne Konstante definieren
    Code:
    #include <iostream>
    ...
    #define PI 3.141592653

    int main() {...}

    oder
    Code:
    ...
    int main(...)
    {
        const double PI = 3.141592653;
        ...
    }

    - anstelle von "cin.ignore();" mehrmals hintereinander aufzurufen, verwende ich lieber "std::system("pause");", ist auch linuxkompatibel

    Ansonsten sieht der Code sehr gut aus, hab den Algorithmus in meinem Programm auch genauso umgesetzt.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Elektrotechnik und Informationstechnik

    Lern- und Gedächtnistraining - gepostet von Johannes am Mittwoch 24.01.2007
    @ Jonas - gepostet von Thomas Nolden am Dienstag 14.11.2006



    Ähnliche Beiträge wie "Übung 7 Aufgabe 3"

    Übung gasaustritt im feuerwehrhaus - jamal-jefferson (Donnerstag 06.04.2006)
    Beispiellösung: Übung 7, Aufgabe 1 (Binomialkoeffizient) - NVD (Freitag 08.12.2006)
    5.übung salze - Chris (Sonntag 16.12.2007)
    Aufgabe 7 - xfire64 (Freitag 10.11.2006)
    Aufgabe Betriebssystem - schell (Montag 07.11.2005)
    Stahlbau 2. Übung - cecily (Sonntag 05.11.2006)
    Zettel Nr 6 Aufgabe 23a - ahnungslos (Mittwoch 30.05.2007)
    Übung macht den Meister - donna (Sonntag 29.04.2007)
    Bleib-Übung - rockyhund (Sonntag 12.08.2007)
    [audio] Ring Ring (extended version) - ABBAinter.net (Samstag 02.06.2012)