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