diff --git a/histo.c b/histo.c index e8017710b34781869383bb49970ec3d29da3bba5..0a07188ac47e3acfdbc93846520c7f90f7600cf8 100644 --- a/histo.c +++ b/histo.c @@ -7,6 +7,7 @@ int main() { srand(time(NULL)); + size_t cycle_number = 3; // Ask the user the size of the array size_t array_size = ask_array_size(); int *array = malloc(array_size * sizeof(int)); @@ -15,6 +16,17 @@ int main() { fill_array_with_random_values(array, array_size); // Print the array + printf("Original array :\n"); + print_array(array, array_size); + + // Shuffle the array + shuffle_array(array, array_size); + printf("Array after shuffle :\n"); + print_array(array, array_size); + + // Perform a cyclic permutation + perform_cyclic_permutation(array, array_size, cycle_number); + printf("Array after cyclic permutation :\n"); print_array(array, array_size); // Find the lowest value in the array diff --git a/unidimensional_array.c b/unidimensional_array.c index b803efd624afcf0b69780be324297f2f9b633ad4..df35b64ca38210a4dc9b6a3c01842ec9b9cc320c 100644 --- a/unidimensional_array.c +++ b/unidimensional_array.c @@ -34,8 +34,24 @@ void fill_array_with_random_values(int* array, size_t array_size) { shuffle_array(array, array_size); } + +void perform_cyclic_permutation(int* array, size_t array_size, size_t cycle_number) { + int *array_tmp = malloc(array_size * sizeof(int)); + + for (size_t i = 0; i < array_size; i++) { + size_t tmp_index = (i + cycle_number) % array_size; + array_tmp[tmp_index] = array[i]; + } + + for (size_t i = 0; i < array_size; i++) { + array[i] = array_tmp[i]; + } + + free(array_tmp); +} + void print_array(int* array, size_t array_size) { - printf("Array :\n["); + printf("["); for (size_t i = 0; i < array_size; i++) { printf("%d", array[i]); diff --git a/unidimensional_array.h b/unidimensional_array.h index b0c8f255f27139ae4ed93cb44c4be4b1f8449592..0dcc53fb96b40795d3fc02165db2486926ca2a3a 100644 --- a/unidimensional_array.h +++ b/unidimensional_array.h @@ -17,6 +17,8 @@ int find_index_highest_value_in_array(int* array, size_t array_size); void shuffle_array(int* array, size_t array_size); +void perform_cyclic_permutation(int* array, size_t array_size, size_t cycle_number); + void print_array(int* array, size_t array_size); void swap(int *x, int *y);