Funkcja dla jednego z pól struktury losuje typ int kontrolując powtórzenia. Po uruchomieniu programu i wypisaniu wartości okazuje się że wylosowane wartości się powtarzają.
Funkcja losowania:
int losuj_liczbe(){
int wylosowana, j;
if (licznik ==0){
wylosowana = rand()%10000-1000;
tab2[licznik]=wylosowana;
}
else{
while(j<=licznik) {
wylosowana = rand()%10000-1000;
for(j = 0; j <=licznik; j++){
if(wylosowana == tab2[j]){
break;
}
}
tab2[licznik+1] = wylosowana;
}
return wylosowana;
}
}
Dalej w programie:
//cos_tam_cos_tam
tab2 = (int*)malloc(N*sizeof(int));
srand(time(NULL));
for (i = 0; i<=n; i++){
tab[i]=(struct Struktura*)malloc(sizeof(struct Struktura));
tab[i]->i=losuj_liczbe();
tab[i]->c=losuj_znak();
tab[i]->f=1000+i;
}
Czy to przez złe umiejscowienie srand? Jest on wewnątrz innej funkcji, ale wywoływana jest tylko raz. srand powinien być wywołany w maine, jednak gdy tak zrobiłem, wszystkie wartości pola dla któego losujemy liczbę były identyczne. Co jest nie tak?