From 5e54fe463708786254090ff22471a01d77e8b5de Mon Sep 17 00:00:00 2001 From: Dario Genga <dario.genga@etu.hesge.ch> Date: Mon, 15 Nov 2021 19:02:45 +0100 Subject: [PATCH] Add shuffle method to create a random array Also added a method to display the content of the array. --- histo.c | 5 +++++ unidimensional_array.c | 34 +++++++++++++++++++++++++++------- unidimensional_array.h | 10 +++++++--- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/histo.c b/histo.c index 0c0e596..e801771 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 25a288f..b803efd 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 17cedaa..b0c8f25 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); -- GitLab