diff --git a/numbers.c b/numbers.c index 9b5817a..0e13da0 100644 --- a/numbers.c +++ b/numbers.c @@ -24,6 +24,7 @@ unsigned int checkArray(unsigned int *array, unsigned int len, unsigned int numb { free = 0; break; + } } @@ -34,7 +35,8 @@ unsigned int *createNumbers(unsigned int len) { srand(time(NULL)); unsigned int *array = (unsigned int *)malloc(len * sizeof(unsigned int)); - int randomNr, randomPos, counter; + int randomNr, randomPos, filler; + if (array == NULL) { @@ -45,45 +47,25 @@ unsigned int *createNumbers(unsigned int len) { array[i] = 0; } - - randomNr = rand() % (2 * len + 1); - randomPos = rand() % (len); - array[randomPos] = randomNr; - do + + for (int i = 0; i < len; i++) { - randomPos = rand() % (len); - } while (array[randomPos] != 0); - array[randomPos] = randomNr; - - while (!checkArray(array, len, 0)) - { - counter = 0; do { - if (counter == len) - { - return NULL; - } - - randomPos = rand() % (len); - counter++; - } while (array[randomPos] != 0); - - counter = 0; - do - { - if (counter == len * 2) - { - return NULL; - } - - randomNr = rand() % (2 * len + 1); - counter++; - } while (!checkArray(array, len, randomNr)); - - array[randomPos] = randomNr; + array[i] = (rand() % (2 * len))+ 1; + } while (!checkArray(array, i, array[i])); } + randomPos = rand() % len; + randomNr = array[randomPos]; + + filler = randomPos; + while(filler == randomPos) + { + filler = rand() % len; + } + array[filler] = randomNr; + return array; }