From a5cd2dd17e4c008106de8191b549b709201a709e Mon Sep 17 00:00:00 2001 From: "dario.genga" <dario.genga@etu.hesge.ch> Date: Tue, 3 May 2022 15:30:25 +0200 Subject: [PATCH] Add finished ex1 --- ex1/ex1.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/ex1/ex1.c b/ex1/ex1.c index 2f02cc2..e3096a1 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -7,7 +7,69 @@ #include <stdlib.h> #include <string.h> #include <stdbool.h> +#include <math.h> + +double **alloc_matrix(int nb_row, int nb_col) { + double **matrix = malloc(sizeof(double) * nb_row); + for (int i = 0; i < nb_row; i++) { + matrix[i] = malloc(sizeof(double) * nb_col); + } + return matrix; +} + +double **create_matrix(int nb_row, int nb_col) { + double **matrix = alloc_matrix(nb_row, nb_col); + + for (int row = 0; row < nb_row; row++) { + for (int col = 0; col < nb_col; col++) { + matrix[row][col] = sqrt(row + col); + } + } + return matrix; +} + +double **average_matrix(double **matrix, int nb_row, int nb_col) { + double **average = alloc_matrix(nb_row, nb_col); + + for (int row = 0; row < nb_row; row++) { + for (int col = 0; col < nb_col; col++) { + double ave = 0; + if (row >= 1 && row <= nb_row -2 && col >= 1 && col <= nb_col - 2) { + ave = (1.0 / 5.0) * (matrix[row][col] + matrix[row+1][col] + matrix[row-1][col] + matrix[row][col+1] + matrix[row][col-1]); + } else { + ave = matrix[row][col]; + } + average[row][col] = ave; + } + } + + return average; +} + +void destroy(double **matrix, int nb_row) { + for (int row = 0; row < nb_row; row++) { + free(matrix[row]); + } + free(matrix); +} + +void print_matrix(double **matrix, int nb_row, int nb_col) { + for (int row = 0; row < nb_row; row++) { + for (int col = 0; col < nb_col; col++) { + printf("%f ", matrix[row][col]); + } + printf("\n"); + } +} int main() { + int row = 5; + int col = 4; + double **matrix = create_matrix(row, col); + double **average = average_matrix(matrix, row, col); + print_matrix(average, row, col); + + destroy(matrix, row); + destroy(average, row); return EXIT_SUCCESS; } -- GitLab