Funktionsergebnis als Variable



  • Hallo! 🙂

    ich steh schon wieder vor einem neuen problem. und zwar habe ich eine funktion zum generieren von zufallszahlen als myrand.h gespeichert. diese rufe ich dann in einem .c programm mit include auf.

    #include <stdlib.h>
    #include <time.h>
    
    myrand(int r)
    {
         srand ( time(NULL) );
         r = rand() % r + 1;
    }
    

    Im eigentlichen Programm soll dann eine variable den zahlenwert übernehmen.
    also quasi:

    #include <myrand.h>
    
    main ()
    {
         int x;
         x = myrand(9);
    }
    

    ich hab schon viel probiert, aber bisher hats nie geklappt.
    jemand eine idee wie ich das zum laufen bringe? es sollte aber eine funktion bleiben.

    mfg Chris



  • Deine Funktion gibt nichts zurück. Ein return r; statement fehlt und den Rückgabetyp in der Signatur deutlich zu machen, schadet dabei auch nicht.

    Wenn du bei jedem Aufruf neu seedest, machst du dir möglicherweise nur die Verteilung kaputt.

    Warum packst du die Funktionsdefinition in eine Headerdatei?


  • Mod

    int myrand(int r)
    {
         srand ( time(NULL) );
         return rand() % r + 1;
    }
    

    Wird aber nicht so funktionieren wie du dir das vorstellst, weil du nicht verstanden hast wie der Zufallsgenerator funktioniert.

    Aber bevor ich den Zufallsgenerator erkläre, solltest du in deinem Lehrwerk nochmal auf Anfang zurückgehen und nochmal alles machen. Da sind noch so einige andere Fehler im Programm die auf mangelndes Verständnis hindeuten was du da eigentlich tust. Und das bei 10 Zeilen! Falls dein Lehrwerk dir C in diesem Stil beigebracht haben sollte (was bei schlechten Lehrwerken der Fall sein könnte), schmeiß es weg.



  • Du musst das ergebnis der Funktion mit return zurückgeben aber du musst vorher vor denn Funktionsnamen bei der Definition den Typ des zurückzugebenen Wertes schreiben
    zB so

    int myrand(int r)
    {
         srand ( time(NULL) );
         r = rand() % r + 1;
         return r;
    }
    


  • ok ich hab jetzt auch bemerkt das das abgespeckte/umgeschriebene programm was ich gepostet habe, nicht funktioniert. mein eigentlicher zufallsgenerator ist aber funktionsfähig und hat auch in einem test, nahezug perfekte ergebnisse.

    return r;

    das war das wonach ich gesucht habe! 🙂
    danke. jetzt weiß ich wie ich wie ich variablen aus funktionen übergebe 🙂


Anmelden zum Antworten