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