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(); }