diff --git a/slides/exemples/anagram.c b/slides/exemples/anagram.c new file mode 100644 index 0000000000000000000000000000000000000000..60935be0b7433d58c35d042b31583b25d205efd2 --- /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 0000000000000000000000000000000000000000..2c22222053794f86a9350aba53ff31af7de7eaf8 --- /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 0000000000000000000000000000000000000000..2c69334572e48c0660af9dc4c623cfa5afa4d034 --- /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 0000000000000000000000000000000000000000..afdd1b140599d338cacc20ac45c15e2966a67e83 --- /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 0000000000000000000000000000000000000000..648c2e5ce903d3389b7426534cb07c4f980a27ce --- /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 0000000000000000000000000000000000000000..d30ef8a14820eee06a6486a0f6d98e18bdbc233d --- /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); +}