Moin.
Nur mal so zur Übung hab ich das folgene kleine Progrämmchen im C++ geschrieben:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
int main()
{
int staben;
char vok[6] = {'a','e','i','o','u','y'};
char kons[19] = {'b','c','d','f','g','h','j','k','l','m','n','p','r','s','t','v','w','x','z'};
int i = 0;
int zuf;
int exit = 0;
while(exit != 1)
{
cout << "Wie lang soll der Nick denn sein? (In Zeichen, 2-25): ";
cin >> staben;
cout << endl;
if(staben > 25 || staben < 2)
{
cout << "Sorry, nur 2 bis 25 Zeichen" << endl << endl;
}
else
{
char nick[staben];
while(i <= staben)
{
if(i % 2 == 0)
{
srand(time(NULL));
zuf = rand() % 19; nick[i] = kons[zuf]; }
else
{
srand(time(NULL));
zuf = rand() % 6; nick[i] = vok[zuf]; }
i = i+1;
}
cout << nick << endl;
exit = 1;
}
}
return 0;
}
Das Problem is nur, dass erstens, wenn ich das Programm mit g++ compiliere und ausführe immer hinter dem generierten Nick noch diese 13 weiteren Zeichen ausgegeben werden: "(óÿ¿×«@À«Hóÿ¿"
Und zweitens, dass der Computer so schnell ist, dass er den Nick immerhalb von viel weniger als einer sekunde erzeugt, sodass man mit srand(time(NULL)) keine änderung der Zufallszahl von rand() zustande bekommt.
Dabei entstehen dann dur solche Sachen:
gigigi
bububububu
hyhyh
hihihihihihihihih
bobo
Das ist total langweilig. Gibts da nich noch was wie Millisekunden seit 1970 oder so?
Und wieso Muss ich dem time() immer NULL übergeben, damit was rauskommt?
Also drei Fragen nach der Wichtigkeit geordnet.
VDiV!