From c5c39b87a2fe3d9ebd7d5a363e7256bfcc437bd3 Mon Sep 17 00:00:00 2001
From: "dario.genga" <dario.genga@etu.hesge.ch>
Date: Tue, 23 Nov 2021 00:49:52 +0100
Subject: [PATCH] Add matrix equals, get and set

Also added some matrix destroy to the tests to free the memory.
---
 main.c   |  21 ++++++++++++++++++---
 matrix.c |  36 ++++++++++++++++++++++++++++++++++++
 test.c   |   9 +++++++--
 tests    | Bin 0 -> 34656 bytes
 4 files changed, 61 insertions(+), 5 deletions(-)
 create mode 100755 tests

diff --git a/main.c b/main.c
index 2ddb2da..bf04085 100644
--- a/main.c
+++ b/main.c
@@ -5,9 +5,6 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-// #include <math.h> 
-// #include <time.h>
-// #include <stdbool.h>
 #include "matrix.h"
 
 int main() {
@@ -37,6 +34,24 @@ int main() {
     matrix_extract_submatrix(&sub, transposed, 1, 4, 1, 3);
     printf("Sub matrix :\n");
     matrix_print(sub);
+    // Equal
+    if (matrix_is_equal(mat, cloned)) {
+        printf("The following matrix are equals :\n");
+    } else {
+        printf("The following matrix are not equals :\n");
+    }
+    printf("Matrix 1\n");
+    matrix_print(mat);
+    printf("Matrix 2\n");
+    matrix_print(cloned);
+    // Get & set
+    int32_t element;
+    matrix_get(&element, mat, 0, 0);
+    printf("First element of the first matrix : %d\n", element);
+    matrix_set(mat, 0, 0, 42);
+    printf("The first element of the first matrix has been changed :\n");
+    matrix_print(mat);
+
     // Free the memory
     matrix_destroy(&mat);
     matrix_destroy(&cloned);
diff --git a/matrix.c b/matrix.c
index c477170..5d5c313 100644
--- a/matrix.c
+++ b/matrix.c
@@ -140,3 +140,39 @@ error_code matrix_extract_submatrix(matrix *sub, const matrix mat, int32_t m0, i
 
     return ok;
 }
+
+
+bool matrix_is_equal(matrix mat1, matrix mat2) {
+    if (mat1.m != mat2.m || mat1.n != mat2.n) {
+        return false;
+    }
+
+    // Parse each values of the matrix
+    for (int i = 0; i < mat1.m; i++) {
+        for (int k = 0; k < mat1.n; k++) {
+            if (mat1.data[i][k] != mat2.data[i][k]) {
+                return false;
+            }
+        }
+    }
+    return true;
+}
+
+error_code matrix_get(int32_t *elem, const matrix mat, int32_t ix, int32_t iy) {
+    if (ix < 0 || iy < 0 || iy >= mat.m || ix >= mat.n) {
+        return err;
+    }
+    *elem = mat.data[iy][ix];
+
+    return ok;
+}
+
+
+error_code matrix_set(matrix mat, int32_t ix, int32_t iy, int32_t elem) {
+    if (ix < 0 || iy < 0 || ix > mat.m || iy > mat.n) {
+        return err;
+    }
+    mat.data[iy][ix] = elem;
+
+    return ok;
+}
diff --git a/test.c b/test.c
index f65c4e9..9e99184 100644
--- a/test.c
+++ b/test.c
@@ -4,7 +4,6 @@
  */
 #include "matrix.h"
 #include <assert.h>
-#include <math.h>
 #include <stdbool.h>
 #include <stdio.h>
 
@@ -24,8 +23,11 @@ int main() {
     // Starting the tests...
     printf("Starting the tests...\n");
     assert(matrix_alloc(&mat, m, n) == ok);
+    assert(matrix_destroy(&mat) == ok);
     assert(matrix_init(&mat, m, n, val) == ok);
+    assert(matrix_destroy(&mat) == ok);
     assert(matrix_init(&mat, -1, n, val) == err);
+    assert(matrix_destroy(&mat) == ok);
     assert(matrix_init_from_array(&mat, m, n, data, m*n) == ok);
     assert(matrix_clone(&cloned, mat) == ok);
     assert(matrix_transpose(&transposed, mat) == ok);
@@ -37,8 +39,11 @@ int main() {
     assert(matrix_set(mat, 0, 0, set_elem) == ok);
     assert(mat.data[0][0] == set_elem);
     assert(matrix_destroy(&mat) == ok);
+    matrix_destroy(&cloned);
+    matrix_destroy(&transposed);
+    matrix_destroy(&sub);
 
 
-    printf("The tests are completed and were successful !");
+    printf("The tests are completed and were successful !\n");
     return EXIT_SUCCESS;
 }
diff --git a/tests b/tests
new file mode 100755
index 0000000000000000000000000000000000000000..cdf7679023159a823f7a880a0cb3df0001d843d5
GIT binary patch
literal 34656
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
UhoLC}%WS9tQw*7C8ql~50CXxx0RR91

literal 0
HcmV?d00001

-- 
GitLab