c++ zufallszahl

Iquethen

Member
hallo forum,
ist zwar eigentlich keine bsd-frage, aber ich bin mir fast sicher daß ihr mir trotzdem helfen könnt. Bin grad dabei mir c++ beizubringen und hab mir dazu ein buch gekauft. Ich brauch jetzt ne zufallszahl, in dem buch war folgender weg beschrieben:

#include <cstlib>
#include <iostream>
#include <ctime>

using namespace std;

int main()

{

long b,sek;
time( &sek);
srand((unsigned)sek);
b = rand();
cout << b << endl;

return 0;

}

beim kompilieren erhalte ich folgende fehlermeldung:

srand.cpp: In function `int main()':
srand.cpp:11: invalid conversion from `long int*' to `time_t*'

also, ich versteh soviel, dass ich hier wohl ne typumwandlung erzeuge die nicht korrekt ist, und ich kann mit dem ( &sek) noch nicht viel anfangen, aber wer kann mir verraten wie ich dieses problemchen löse ?
 
falls dein code copy && waste war sollte er sich schon bei:

#include <cstlib>

beschweren.

#include <cstdlib>

<snip>
srand((unsigned)time(&sek));
</snip>

dafuer das

time( &sek);

ganz weg.
 
Zuletzt bearbeitet:
hallo kith,

du hast natürlich recht mit der cstdlib, aber ich erhalte immernoch die selbe fehlermeldung für meine zufallszahl.

mfg

iquethen
 
#include <cstdlib>
#include <ctime>
#include <iostream>

using namespace std;

int main()
{
int sek, random_integer;
srand((unsigned)time(&sek));
cout << (random_integer = rand())<< "\n" ;
}



compiliert bei mir problemlos.
 
int main()

{

long b,sek;
time( &sek);
srand((unsigned)sek);
b = rand();
cout << b << endl;

return 0;

}
probier mal das:
Code:
int main()
{
   time_t sek;
   long b;
   time(&sek);
   srand(sek);
   b = rand();
   cout << b << endl;
   return 0;
}

edit:

@kith: mein compiler (gcc 3.4) gibt die fehlermeldung:
blubb.cpp: In function `int main()':
blubb.cpp:11: error: invalid conversion from `int*' to `time_t*'
blubb.cpp:11: error: initializing argument 1 of `time_t time(time_t*)'
gcc 2.94.3 gibt die meldung:
blubb.cpp: In function `int main()':
blubb.cpp:11: passing `int *' as argument 1 of `time(time_t *)'

meine version lässt sich mit beiden compilern problemlos übersetzen :)

auf bald
oenone

PS: getestet auf linux
 
Zuletzt bearbeitet:
gcc version 2.95.3 20010125 laeuft bei mir... seltsam.

ist natuerlich ordentlicher einen time_t ins time() zu setzen :). aber ich bin ja kein programmierer.

aber in einem buch sollte sowas eigentlich richtig drinstehn... (*g* data becker buch? markt und technik? hrhrhr).
 
@ oenone,

vielen dank, so funktioniert das.


@ kith
das buch ist von peter und ulla prinz, c++ lernen und profesionell anwenden, erschienen im mitp verlag, gefällt mir bis jetzt sehr gut,
übersichtliche kapitel mit vernünftigen aufgaben zum selber lösen.

mfg iquethen
 
Zurück
Oben