From 0d5c39baf007fe65899b6188863dfee63da8425e Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Tue, 29 Oct 2024 14:20:27 +0100
Subject: [PATCH] added codes

---
 slides/exemples/anagram.c   | 55 +++++++++++++++++++++++++++++++++++++
 slides/exemples/factorial.c | 15 ++++++++++
 slides/exemples/matrix.c    | 24 ++++++++++++++++
 slides/exemples/pgcd_rec.c  | 24 ++++++++++++++++
 slides/exemples/strlen.c    |  7 +++++
 slides/exemples/sum.c       | 24 ++++++++++++++++
 6 files changed, 149 insertions(+)
 create mode 100644 slides/exemples/anagram.c
 create mode 100644 slides/exemples/factorial.c
 create mode 100644 slides/exemples/matrix.c
 create mode 100644 slides/exemples/pgcd_rec.c
 create mode 100644 slides/exemples/strlen.c
 create mode 100644 slides/exemples/sum.c

diff --git a/slides/exemples/anagram.c b/slides/exemples/anagram.c
new file mode 100644
index 0000000..60935be
--- /dev/null
+++ b/slides/exemples/anagram.c
@@ -0,0 +1,55 @@
+#include <stdio.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#define SIZE 10
+
+int tab_find_min_index(int i, int size, char tab[size]) {
+    int i_min = i;
+    for (int j = i + 1; j < (int)strlen(tab); ++j) {
+        if (tab[j] < tab[i_min]) {
+            i_min = j;
+        }
+    }
+    return i_min;
+}
+
+void swap(int i, int j, char tab[]) {
+    char tmp = tab[i];
+    tab[i] = tab[j];
+    tab[j] = tmp;
+}
+
+void tab_selection_sort(int size, char tab[size]) {
+    for (int i = 0; i < (int)strlen(tab); ++i) {
+        int i_min = tab_find_min_index(i, size, tab);
+
+        // échange tab[i] et tab[j]
+        if (i_min != i) {
+            swap(i, i_min, tab);
+        }
+    }
+}
+
+bool tab_is_sorted(int size, char tab[size]) {
+    for (int i = 1; i < size; ++i) {
+        if (tab[i - 1] > tab[i]) {
+            return false;
+        }
+    }
+    return true;
+}
+
+int main() {
+    // allocate tab
+    char tab_lhs[SIZE] = "tutut";
+    char tab_rhs[SIZE] = "tutta";
+    printf("Are %s and %s anagrams? ", tab_lhs, tab_rhs);
+    tab_selection_sort(SIZE, tab_lhs);
+    tab_selection_sort(SIZE, tab_rhs);
+    printf("Are %s and %s anagrams? ", tab_lhs, tab_rhs);
+    int is_equal = strcmp(tab_lhs, tab_rhs);
+    printf("%d", is_equal);
+}
diff --git a/slides/exemples/factorial.c b/slides/exemples/factorial.c
new file mode 100644
index 0000000..2c22222
--- /dev/null
+++ b/slides/exemples/factorial.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+int factorial(int n) {
+    if (n > 1) {
+        return n * factorial(n - 1);
+    } else {
+        return 1;
+    }
+}
+
+int main() {
+    int n = 1000000000;
+    printf("%d! = %d\n", n, factorial(n));
+    return 0;
+}
diff --git a/slides/exemples/matrix.c b/slides/exemples/matrix.c
new file mode 100644
index 0000000..2c69334
--- /dev/null
+++ b/slides/exemples/matrix.c
@@ -0,0 +1,24 @@
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#define NX 50
+#define NY 100
+
+int main() {
+    // allocate a 2d array for 50 x 100 of integers
+    int tab[NX][NY];
+    // fill the array with random values from 0 to 255 (inclusive)
+    srand(time(NULL));
+    for (int i = 0; i < NX; ++i) {
+        for (int j = 0; j < NY; ++j) {
+            tab[i][j] = rand() % 256;
+        }
+    }
+    for (int i = 0; i < NX; ++i) {
+        for (int j = 0; j < NY; ++j) {
+            printf("%d ", tab[i][j]);
+        }
+        printf("\n");
+    }
+}
diff --git a/slides/exemples/pgcd_rec.c b/slides/exemples/pgcd_rec.c
new file mode 100644
index 0000000..afdd1b1
--- /dev/null
+++ b/slides/exemples/pgcd_rec.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+
+int pgcd(int m, int n) {
+    if (m % n == 0) {
+        return n;
+    } else {
+        return pgcd(n, m % n);
+    }
+}
+
+// int pgcd(int m, int n) {
+//     if (m % n == 0) {
+//         return n;
+//     } else {
+//         return pgcd(n, m % n);
+//     }
+// }
+
+int main() {
+    int m = 42;
+    int n = 27;
+
+    printf("Le PGCD de %d et %d est %d\n", m, n, pgcd(m, n));
+}
diff --git a/slides/exemples/strlen.c b/slides/exemples/strlen.c
new file mode 100644
index 0000000..648c2e5
--- /dev/null
+++ b/slides/exemples/strlen.c
@@ -0,0 +1,7 @@
+size_t strlen(char *str) {
+    int i = 0;
+    while (str[i] != '\0') {
+        i += 1;
+    }
+    return i;
+}
diff --git a/slides/exemples/sum.c b/slides/exemples/sum.c
new file mode 100644
index 0000000..d30ef8a
--- /dev/null
+++ b/slides/exemples/sum.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+
+int sum(int n) {
+    if (n <= 1) {
+        return 1;
+    } else {
+        return n + sum(n - 1);
+    }
+}
+
+int sum_imp(int n) {
+    int i = 1;
+    int sum = 0;
+    while (i <= n) {
+        sum += i;
+        i += 1;
+    }
+    return sum;
+}
+
+int main() {
+    int n = 100;
+    printf("Sum(%d) = %d, theoretical = %d\n", n, sum(n), n * (n + 1) / 2);
+}
-- 
GitLab