From 021b956877da1c13723ab339d2b2c7c0e4bb6bb6 Mon Sep 17 00:00:00 2001
From: Dario Genga <dario.genga@etu.hesge.ch>
Date: Mon, 15 Nov 2021 22:02:28 +0100
Subject: [PATCH] Add method to convert int array to double array

Small refactoring of the code for more consistency for the pointer
parameter star (*) position.
---
 histo.c                |  5 +++++
 unidimensional_array.c | 41 +++++++++++++++++++++++++++++++----------
 unidimensional_array.h | 24 ++++++++++++++----------
 3 files changed, 50 insertions(+), 20 deletions(-)

diff --git a/histo.c b/histo.c
index 488524e..1fd0d5d 100644
--- a/histo.c
+++ b/histo.c
@@ -65,6 +65,11 @@ int main() {
     printf("Result array after multiplication :\n");
     print_array(result_mul_array, array_size);
 
+    // Convert the first array to an array of double
+    double *converted_array = convert_int_array_to_double(array, array_size);
+    printf("Array converted to double :\n");
+    print_array_of_double(converted_array, array_size);
+
     // Free the memory
     free(array);
     free(second_array);
diff --git a/unidimensional_array.c b/unidimensional_array.c
index 2ca9b8d..f56e61a 100644
--- a/unidimensional_array.c
+++ b/unidimensional_array.c
@@ -5,7 +5,6 @@
 
 #include "unidimensional_array.h"
 #include <stdio.h>
-#include <time.h>
 
 size_t ask_array_size() {
     size_t array_size = 0;
@@ -14,7 +13,7 @@ size_t ask_array_size() {
     return array_size;
 }
 
-void shuffle_array(int* array, size_t array_size) {
+void shuffle_array(int *array, size_t array_size) {
     for (size_t i = 0; i < array_size; i++)
     {
         int index1 = rand() % (int)array_size;
@@ -23,7 +22,7 @@ void shuffle_array(int* array, size_t 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) {
     // Fill the array with all values from 0 to its size - 1
     for (size_t i = 0; i < array_size; i++)
     {
@@ -35,7 +34,7 @@ void fill_array_with_random_values(int* array, size_t array_size) {
 }
 
 
-void perform_cyclic_permutation(int* array, size_t array_size, size_t cycle_number) {
+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++) {
@@ -62,7 +61,19 @@ void print_array(int* array, size_t array_size) {
     printf("]\n");
 }
 
-int find_lowest_value_index_in_array(int* array, size_t array_size) {
+void print_array_of_double(double *array, size_t array_size) {
+    printf("[");
+    for (size_t i = 0; i < array_size; i++)
+    {
+        printf("%f", array[i]);
+        if (i + 1 < array_size) {
+            printf(" , ");
+        }
+    }
+    printf("]\n");
+}
+
+int find_lowest_value_index_in_array(int *array, size_t array_size) {
     int lowest_value;
     size_t lowest_index;
 
@@ -78,13 +89,13 @@ int find_lowest_value_index_in_array(int* array, size_t array_size) {
     return lowest_index;
 }
 
-void permute_lowest_value_with_last_value(int* array, size_t array_size) {
+void permute_lowest_value_with_last_value(int *array, size_t array_size) {
     int lowest_index = (int)find_lowest_value_index_in_array(array, array_size);
     int last_index = array_size - 1;
     swap(&array[lowest_index], &array[last_index]);
 }
 
-void sort_by_insertion_desc(int* array, size_t array_size) {
+void sort_by_insertion_desc(int *array, size_t array_size) {
     size_t i = 1;
 
     while (i < array_size) {
@@ -97,7 +108,7 @@ void sort_by_insertion_desc(int* array, size_t array_size) {
     }
 }
 
-size_t count_elements_in_array_lower_than_value(int* array, size_t array_size, int value) {
+size_t count_elements_in_array_lower_than_value(int *array, size_t array_size, int value) {
     size_t total = 0;
 
     for (size_t i = 0; i < array_size; i++)
@@ -110,18 +121,28 @@ size_t count_elements_in_array_lower_than_value(int* array, size_t array_size, i
     return total;
 }
 
-void compute_two_array(int* first_array, int* second_array, int* result_array, size_t array_size) {
+void compute_two_array(int *first_array, int *second_array, int *result_array, size_t array_size) {
     for (size_t i = 0; i < array_size; i++) {
         result_array[i] = first_array[i] + second_array[i];
     }
 }
 
-void multiply_array_with_value(int* array, size_t array_size, int* result_array, int value) {
+void multiply_array_with_value(int *array, size_t array_size, int *result_array, int value) {
     for (size_t i = 0; i < array_size; i++) {
         result_array[i] = array[i] * value;
     }
 }
 
+double *convert_int_array_to_double(int* array, size_t array_size) {
+    double *converted_array = malloc(array_size * sizeof(double));
+
+    for (size_t i = 0; i < array_size; i++) {
+        converted_array[i] = (double)array[i];
+    }
+
+    return converted_array;
+}
+
 void swap(int *x, int *y)
 {
     int tmp = *x;
diff --git a/unidimensional_array.h b/unidimensional_array.h
index 14430d5..5ef786b 100644
--- a/unidimensional_array.h
+++ b/unidimensional_array.h
@@ -9,25 +9,29 @@
 
 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_index_in_array(int* array, size_t array_size);
+int find_lowest_value_index_in_array(int *array, size_t array_size);
 
-void permute_lowest_value_with_last_value(int* array, size_t array_size);
+void permute_lowest_value_with_last_value(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 perform_cyclic_permutation(int *array, size_t array_size, size_t cycle_number);
 
-void sort_by_insertion_desc(int* array, size_t array_size);
+void sort_by_insertion_desc(int *array, size_t array_size);
 
-size_t count_elements_in_array_lower_than_value(int* array, size_t array_size, int value);
+size_t count_elements_in_array_lower_than_value(int *array, size_t array_size, int value);
 
-void compute_two_array(int* first_array, int* second_array, int* result_array,  size_t array_size);
+void compute_two_array(int *first_array, int *second_array, int *result_array,  size_t array_size);
 
-void multiply_array_with_value(int* array, size_t array_size, int* result_array, int value);
+void multiply_array_with_value(int *array, size_t array_size, int *result_array, int value);
 
-void print_array(int* array, size_t array_size);
+double *convert_int_array_to_double(int *array, size_t array_size);
+
+void print_array(int *array, size_t array_size);
+
+void print_array_of_double(double *array, size_t array_size);
 
 void swap(int *x, int *y);
 
-- 
GitLab