srand(); funktioniert nicht ganz

erstmal der code:

Code:
#include <time.h>
#include <stdlib>

int zufall;

zufall = 0 + ( (srand( (unsigned) time(NULL))) % ( 7 - 0 + 1 ) ); 
/*für unsigned auch schon eine echte unsigned int eingesetzt*/
//soll zufallszahl zwischen 0 und 7 erzeugen

PROBLEM: in der zeile wo die zufallszahl erzeugt werden soll kommt die felermeldung das "void nicht ignoriert wird wie es ignoriert werden sollte"

verwendet wird dev-c++
danke im voraus für hilfe

Wolfy
 
Benutz doch
rand()%8
Dies wird dir bei Integern eine Zahl zwischen 0 und 7 auswerfen, denn 8 waere ja wieder 0.
mfg

sw33t
 
Das Problem liegt übrigens darin, dass srand() keine Zufallszahl zurückgibt, sondern nur den Zufallszahlengenerator initialisiert. Daher ist der Returntyp void. Und man kann "nichts" nicht in einer Berechnung verwenden, daher die Fehlermeldung.
Daher solltest du normalerweise nur einmal zu Beginn srand() aufrufen und danach die Zufallszahlen mit rand() erzeugen.
 
Sag mal, was hälst Du davon, Operationen in einen Funktionsrumpf zu packen?
Zum Beispiel ganz 0-8-15-mäßig in eine main-Funktion?
Die dann auch vom Betriebssystem zum Start des Programms aufgerufen werden kann?

Edit: Es wird compilierbar sein, wenn Du die Wertzuweisung in die Variablendefinition (als "Initialisierung") hineinpackst. Es ist dann aber noch lange nicht linkbar...

Besser so: [C++] acces violation bei string? (gelöst)
 
srand(time(NULL));

zufall = 0 + rand();

das rand() erzeugt dann die zufallszahl man kann auch bestimmte Zufallsbereiche bestimmen. z.b. mit rand()%49+1 erzeugt z.b. Zahlen zwischen 1 und 49 soweit mich nicht alles täuscht.

Für dein Beispiel in dem Fall:

srand(time(NULL));
zufall = rand()%7;
 
Zurück
Oben