rand
-
Danke für eure tipps !!
-
curb schrieb:
Danke für eure tipps !!
und wie hast du es jetzt gemacht, zeig doch mal den code!
-
ich mach es jetzt so...
void mischen(int* zahl) { srand(time(0)); int i,temp,t; for (i = 100; i > 0; i--) { t= rand()%8; temp = zahl[0]; zahl[0] = zahl[t]; zahl[t] = temp; } }
da ich von swap nichts finde und es besser aussieht als meine erste mischfunktion...(konstruktive kritik ist aber immer erwünscht)
obwohl ich sagen muss, mit der lösung bin ich ganz zu frieden..
-
ps:
ich könnte die schleife auch auf <8 verkürzen und statt zahl[0] auch zahl[i] verwenden...spreche ja von einem array[8]...
-
curb schrieb:
ps:
ich könnte die schleife auch auf <8 verkürzen und statt zahl[0] auch zahl[i] verwenden...spreche ja von einem array[8]...
Genauso meinte ich es auch. 100 mal brauchst du das nicht zu durchlaufen. Ich habe es eben mit folgendem Code getestet.
void mischen(int* zahl) { srand(time(0)); int temp, t; for (int i = 8; i > 0; i--) { t = rand() % i; temp = zahl[i - 1]; zahl[i - 1] = zahl[t]; zahl[t] = temp; } }
-
hab da mal nur ein anderes problem das ich nicht verstehe..
ich hab das auf char umgeschrieben...
void mischen(char* zahl) { srand(time(0)); int i; char temp,t; for (i = 100; i > 0; i--) { t= rand()%8; temp = zahl[0]; zahl[0] = zahl[t]; zahl[t] = temp; } }
und in der main:
int main(void) { int i; char zahl[8]={1,2,3,4,5,6,7,8}; char ein[8]; mischen(zahl); for (i=0;i<8;i++) { printf("%d",zahl[i]); } }
warum muss ich hier %d verwenden um meine zahlen ordentlich zu sehen bei einem char array??? denn bei %c oder %s kommt schwachsinn raus
-
ah sorry hab bemerkt, dass \0 fehlt im string bei der definition...
glaub das ist das problem
-
Habs nicht ausprobiert, aber es könnte durchaus daran liegen, daß das t ein int bleiben sollte
-
ich denke es ist im prinzip egal ob t ein integer oder ein char is...
-
Es ist im Prinzip auch egal. Aber der "Schwachsinn" könnte damit zusammenhängen, daß du Zahlen 1-8 bearbeitest was ja den ASCII-Codes des "Schwachsinns" entspricht