diff --git a/histo.c b/histo.c index 0c0e596fac00b73cd5ab828ea3be93ef63d5c1a3..e8017710b34781869383bb49970ec3d29da3bba5 100644 --- a/histo.c +++ b/histo.c @@ -3,8 +3,10 @@ * Description : Manipulate an unidimensional array with dynamic memory allocation */ #include "unidimensional_array.h" +#include "time.h" int main() { + srand(time(NULL)); // Ask the user the size of the array size_t array_size = ask_array_size(); int *array = malloc(array_size * sizeof(int)); @@ -12,6 +14,9 @@ int main() { // Fill the array with random values fill_array_with_random_values(array, array_size); + // Print the array + print_array(array, array_size); + // Find the lowest value in the array int lowest_value = find_lowest_value_in_array(array, array_size); printf("Lowest value : %d\n", lowest_value); diff --git a/unidimensional_array.c b/unidimensional_array.c index 25a288fc988126d670ed960c3f6f02f3251df078..b803efd624afcf0b69780be324297f2f9b633ad4 100644 --- a/unidimensional_array.c +++ b/unidimensional_array.c @@ -14,19 +14,39 @@ size_t ask_array_size() { return array_size; } -void fill_array_with_random_values(int array[], size_t array_size) { - size_t max_value = array_size - 1; +void shuffle_array(int* array, size_t array_size) { + for (size_t i = 0; i < array_size; i++) + { + int index1 = rand() % (int)array_size; + int index2 = rand() % (int)array_size; + swap(&array[index1], &array[index2]); + } +} + +void fill_array_with_random_values(int* array, size_t array_size) { + // Fill the array with all values from 0 to its size - 1 + for (size_t i = 0; i < array_size; i++) + { + array[i] = i; + } - srand(time(0)); + // Then shuffle the array + shuffle_array(array, array_size); +} +void print_array(int* array, size_t array_size) { + printf("Array :\n["); for (size_t i = 0; i < array_size; i++) { - int random_value = (rand() % (max_value + 1)); - array[i] = random_value; + printf("%d", array[i]); + if (i + 1 < array_size) { + printf(" , "); + } } + printf("]\n"); } -int find_lowest_value_in_array(int array[], size_t array_size) { +int find_lowest_value_in_array(int* array, size_t array_size) { int lowest_value; for (size_t i = 0; i < array_size; i++) { @@ -39,7 +59,7 @@ int find_lowest_value_in_array(int array[], size_t array_size) { return lowest_value; } -int find_index_highest_value_in_array(int array[], size_t array_size) { +int find_index_highest_value_in_array(int* array, size_t array_size) { int highest_value; size_t index_highest_value = 0; diff --git a/unidimensional_array.h b/unidimensional_array.h index 17cedaa196067e3492ef9c5bd8b0d87019ce25a8..b0c8f255f27139ae4ed93cb44c4be4b1f8449592 100644 --- a/unidimensional_array.h +++ b/unidimensional_array.h @@ -9,11 +9,15 @@ size_t ask_array_size(); -void fill_array_with_random_values(int array[], size_t array_size); +void fill_array_with_random_values(int* array, size_t array_size); -int find_lowest_value_in_array(int array[], size_t array_size); +int find_lowest_value_in_array(int* array, size_t array_size); -int find_index_highest_value_in_array(int array[], size_t array_size); +int find_index_highest_value_in_array(int* array, size_t array_size); + +void shuffle_array(int* array, size_t array_size); + +void print_array(int* array, size_t array_size); void swap(int *x, int *y);