Instanzen bilden :\



  • Nabend,

    ich bin hier am verzweifeln ;'(

    Also, ich habe eine Klasse in der 2 Zahlen pro Instanz gespeichert werden sollen. Dies geschieht mit Hilfe eines Zufallsgenerators!

    Hier ein kleiner Auszug:

    class Bruch
    {
        private:  int Zaehler,Nenner,Erg_Zaehler,Erg_Nenner;
                      int Zaehler2,Nenner2;
    
        public:   Bruch(void);              //Konstruktor
                      void Add(Bruch);      //Addition
              int ZaehlerErgOut(void);      //Ausgabe des Zaehlers
              int NennerErgOut(void);   //Ausgabe des Nenners
                  int ZaehlerOut(void);
                  int NennerOut(void);
                  void Zufallszahl(int);
    
    };
    
    Bruch::Bruch(void){}
    
    void Bruch::Add(Bruch b)
    {
        Erg_Zaehler=Zaehler*b.Nenner+b.Zaehler*Nenner;
        Erg_Nenner=Nenner*b.Nenner;
    }
    
    int Bruch::ZaehlerErgOut()
    {
        return(Erg_Zaehler);
    }
    
    int Bruch::NennerErgOut()
    {
        return(Erg_Nenner);
    }
    
    int Bruch::ZaehlerOut()
    {
    
            return(Zaehler);
    }
    
    int Bruch::NennerOut()
    {
    
            return(Nenner);
    }
    void Bruch::Zufallszahl(int Zufall)
    {
    
                    randomize();
                    Zaehler=rand() % Zufall + 1;
                    Nenner=rand() % Zufall + 1;
    }
    

    Wenn ich jetzt im Hauptprogramm eine Instanz bilde

    Bruch a;
    
    a.Zufallszahl(Zufall);
    a.ZaehlerOut();
    

    dann funktioniert das auch, es werden 2 Zufallszahlen generiert und ich kann diese ausgeben.

    so, nun mein Problem, wenn ich eine 2 te Instanz anlege

    Bruch b;
    
    b.Zufallszahl(Zufall);
    
    ...
    

    dann wird aber Instanz a ausgegeben! Woran liegt das bzw. wie kann ich einzelne Instanzen anlegen? Wenn ich mit dem Konstruktor arbeite, dann geht's, aber das ist nicht flexibel genug, ich würde das gerne so regeln 😕 also alles in die Klasse packen...

    Ich bin für jede Hilfe dankbar :>



  • wenn du in randomize srand aufrufst, hast du den fehler.
    srand sollte nur einmal zu beginn des programms aufgerufen werden!



  • Du kannst es zb so machen:

    int random()
    {
        static bool started = false;
        if (!started)
        {
            srand((unsigned)time( NULL ));
        }
        return rnd();
    }
    

Anmelden zum Antworten