hi all.
i wrote this
int crea_vett ( int vett[], int size )
{
int indice;
int poss[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
srand( time( NULL ));
for ( int i = 0 ; i < size ; i++ ) {
indice = rand()%9 + 1;
while ( poss[indice] == 0 )
indice = rand()%9 + 1;
vett[i] = poss[indice];
poss[indice] = 0;
}
return 0;
}
a little function for the creation of a 4 different elements array. the elements have value from 1 to 9 and are chosen by the function rand().
that's the problem: running it, sometime i obtain value like 1330021354561 for an element!!
where's my error?? =(
Indice can be 9, but the valid element ranges are 0-8 (9 different elements). Use indicde = rand()%9; instead of +1.
Would you please save our time by putting the entire code. And why your function like that. it is messed up.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
#include <iostream>
#include <cstdlib>
#include <ctime>
int const SIZE = 4;
void crea_vett(int vett[], const int& size )
{
srand( (unsigned int)time( NULL ));
for ( int i = 0 ; i < size ; i++ )
{
vett[i] = rand()%9 + 1;
std::cout << vett[i] << std::endl;
}
}
int main()
{
int vett[SIZE] = {0};
crea_vett(vett, SIZE);
std::cin.get();
return 0;
}
|
Last edited on
This code is wrong
indice = rand()%9 + 1;
while ( poss[indice] == 0 )
indice = rand()%9 + 1;
vett[i] = poss[indice];
If an array has N elements its indexes are in the range [0, N-1]
You are genereating indexes in the range [1, 9] for an array that has 9 elements.