I am trying to write simple function to check if randomly generated value is already in array. I want to simply reach a number generator without repeating. Unluckly my code does not work. I mean it still generates me duplicated values. Could anyone tell me what I am doing wrong?
Checks if value exists in array:
bool valueExistsInArray(int* array, int value) {
if ((sizeof(array) / sizeof(*array)) <= 0)
return false;
int i = 0;
do {
if (array[i] == value)
return true;
i++;
} while (i < (sizeof(array) / sizeof(*array)));
return false;
}
Generating random values from specified range:
int generateRandomValue(int from, int to) {
return (std::rand() % (to-from+1)) + from;
}
Main function:
int main()
{
srand((unsigned int)time(NULL));
int array[10];
int i = 0;
do {
int value = generateRandomValue(1, 10);
if (!valueExistsInArray(array, value)) {
array[i] = value;
i++;
}
} while (i < (sizeof(array) / sizeof(*array)));
for (int i = 0; i < (sizeof(array) / sizeof(*array)); i++)
std::cout << "Index: " << i << " Value: " << array[i] << "\n";
_getch();
return 0;
}