Aufruf von Funktion, Variablenübergabe



  • Ich habe ein Programm geschrieben das Zufallszahlen zwischen 1 und 0 erzeugt. Jetzt stelle ich aber fest, dass meine Variablenübergabe nicht richtig funktioniert. Wo liegt der Fehler?

    #include <cstdio>
    #include <cstdlib>
    #include <time.h>
    #include <iostream>
    
    using namespace std;
    
    //zufälliges Ereignis
    void Zufallszahlen(double ZufallsZ)
    {
    
    srand ((unsigned) time (NULL));    
    ZufallsZ=(rand() / (double)RAND_MAX);
    
    cout<< ZufallsZ << endl;
    }
    
    //Hauptprogramm
    int main()
    {
    
    double ZufallsZ;
    
    Zufallszahlen(ZufallsZ);
    
    cout<< ZufallsZ;
    system("PAUSE");
    return 0;
    }
    


  • Hallo

    Was bedeutet denn: "nicht richtig klappt"?

    Wenn Du Variablen direkt übergibst, wird immer eine Kopie gemacht und das Original wird nicht verändert. Wenn du das willst, musst du die Variable entweder als Referenz oder als Zeiger übergeben.

    chrische



  • Es wäre eh sinnvoller gleich ein double zurückzugeben.

    Außerdem solltest du srand() nur einmal pro Programm ausführen.



  • Verwende nicht

    void Zufallszahlen(double ZufallsZ)
    

    sondern

    void Zufallszahlen(double& ZufallsZ)
    

    Damit verwendest du eine Referenz auf den Wert, musst aber nicht (wie bei Zeigern) eine Adresse übergeben.



  • Hallo

    TactX schrieb:

    Außerdem solltest du srand() nur einmal pro Programm ausführen.

    Er führt es doch aber bloss einmal aus.

    chrische

    P.S.: ctime statt time.h

    chrische



  • chrische5 schrieb:

    Hallo

    TactX schrieb:

    Außerdem solltest du srand() nur einmal pro Programm ausführen.

    Er führt es doch aber bloss einmal aus.

    wenn man davon ausgeht, dass er nur eine einzige zufallszahl benötigt schon..
    🙄



  • chrische5 schrieb:

    Hallo

    Er führt es doch aber bloss einmal aus.

    sie 😉



  • Cpt. Tanga schrieb:

    chrische5 schrieb:

    Hallo

    TactX schrieb:

    Außerdem solltest du srand() nur einmal pro Programm ausführen.

    Er führt es doch aber bloss einmal aus.

    wenn man davon ausgeht, dass er nur eine einzige zufallszahl benötigt schon..
    🙄

    Dann einfach im Hauptprogramm einmal aufrufen? Geht das?



  • Hallo

    Cpt. Tanga schrieb:

    chrische5 schrieb:

    Hallo

    TactX schrieb:

    Außerdem solltest du srand() nur einmal pro Programm ausführen.

    Er führt es doch aber bloss einmal aus.

    wenn man davon ausgeht, dass er nur eine einzige zufallszahl benötigt schon..
    🙄

    War ja auch nicht ganz ernst gemeint.

    chrische



  • becks21 schrieb:

    Cpt. Tanga schrieb:

    chrische5 schrieb:

    Hallo

    TactX schrieb:

    Außerdem solltest du srand() nur einmal pro Programm ausführen.

    Er führt es doch aber bloss einmal aus.

    wenn man davon ausgeht, dass er nur eine einzige zufallszahl benötigt schon..
    🙄

    Dann einfach im Hauptprogramm einmal aufrufen? Geht das?

    Genau.



  • Gut, danke.

    Und was ist der Unterschied zwischen ctime und time.h?

    Ich weiß, ich frage ganz schön blöd, aber ich habe gerade erst angefangen.



  • ctime ist ISO-C++ Standard, time.h nicht.


Anmelden zum Antworten