Skip to content
Snippets Groups Projects
Commit 9ae7a8d6 authored by dario.genga's avatar dario.genga
Browse files

Add cyclic permutation

Also edited the print_array method to allow more clarity to the display.
parent 5e54fe46
Branches
No related tags found
No related merge requests found
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
int main() { int main() {
srand(time(NULL)); srand(time(NULL));
size_t cycle_number = 3;
// Ask the user the size of the array // Ask the user the size of the array
size_t array_size = ask_array_size(); size_t array_size = ask_array_size();
int *array = malloc(array_size * sizeof(int)); int *array = malloc(array_size * sizeof(int));
...@@ -15,6 +16,17 @@ int main() { ...@@ -15,6 +16,17 @@ int main() {
fill_array_with_random_values(array, array_size); fill_array_with_random_values(array, array_size);
// Print the array // 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); print_array(array, array_size);
// Find the lowest value in the array // Find the lowest value in the array
......
...@@ -34,8 +34,24 @@ void fill_array_with_random_values(int* array, size_t array_size) { ...@@ -34,8 +34,24 @@ void fill_array_with_random_values(int* array, size_t array_size) {
shuffle_array(array, 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) { void print_array(int* array, size_t array_size) {
printf("Array :\n["); printf("[");
for (size_t i = 0; i < array_size; i++) for (size_t i = 0; i < array_size; i++)
{ {
printf("%d", array[i]); printf("%d", array[i]);
......
...@@ -17,6 +17,8 @@ int find_index_highest_value_in_array(int* array, size_t array_size); ...@@ -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 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 print_array(int* array, size_t array_size);
void swap(int *x, int *y); void swap(int *x, int *y);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment