From bc199c3f61af5a82e01007601febcc6de77701e2 Mon Sep 17 00:00:00 2001 From: "thibault.chatillo" <thibault.chatillon@etu.hesge.ch> Date: Wed, 23 Jun 2021 16:05:07 +0200 Subject: [PATCH] finito --- exam2/ex1/main.c | 54 +++++++---- exam2/ex2/Makefile | 15 +-- exam2/ex2/main | Bin 0 -> 39944 bytes exam2/ex2/main.c | 35 +++---- exam2/ex2/tree.c | 227 +++++++++++++++++++++++++++++++++++++++++++++ exam2/ex2/tree.h | 49 ++++++++++ exam2/ex3/main | Bin 0 -> 27504 bytes exam2/ex3/main.c | 53 +++++++---- exam2/ex4/main | Bin 0 -> 28088 bytes exam2/ex4/main.c | 98 +++++++++++++++---- exam2/ex5/Makefile | 10 -- exam2/ex5/main.c | 29 ------ 12 files changed, 446 insertions(+), 124 deletions(-) create mode 100755 exam2/ex2/main create mode 100644 exam2/ex2/tree.c create mode 100644 exam2/ex2/tree.h create mode 100755 exam2/ex3/main create mode 100755 exam2/ex4/main delete mode 100644 exam2/ex5/Makefile delete mode 100644 exam2/ex5/main.c diff --git a/exam2/ex1/main.c b/exam2/ex1/main.c index 45422d4..0784e35 100644 --- a/exam2/ex1/main.c +++ b/exam2/ex1/main.c @@ -2,27 +2,43 @@ #include <stdlib.h> #include <string.h> -typedef struct _element { - char c; - struct _element *next; -} element; - -int main(int argc, char **argv) { - - // read user input - char str[16]; - scanf("%s", str); - int len = strlen(str); - // cli args - if (argc == 1) { - printf("need more arguments"); - return EXIT_FAILURE; + +float moyenne(int i,float*arr){ + if(i==14){ + return arr[i]/15; + }else{ + return arr[i]/15+moyenne(i+1,arr); + } +} + +void swap(float*a,float*b){ + float tmp=*a; + *a=*b; + *b=tmp; +} + +void inverse(int i,float* arr){ + if(i>7){ + return; } + swap(&arr[i],&arr[14-i]); + inverse(i+1,arr); +} + +int main() { + + float change[15]; + for(int i=0;i<15;i++){ + scanf("%f",&change[i]); + } + + // printf("") + printf("moyenne: %.3f\ninversion:\n",moyenne(0,change)); + + inverse(0,change); - for (int i = 0; i < argc; i++) { - if (!strcmp(argv[i], "-c")) { - // do stuff with atof/atoi (argv[++i]) - } + for(int i=0;i<15;i++){ + printf("%.2f\n",change[i]); } return EXIT_SUCCESS; diff --git a/exam2/ex2/Makefile b/exam2/ex2/Makefile index 478f28e..e9c975e 100644 --- a/exam2/ex2/Makefile +++ b/exam2/ex2/Makefile @@ -1,10 +1,11 @@ -main: main.o - gcc -o $@ $< -fsanitize=address -fsanitize=leak +cc=gcc +CFLAGS=-Wextra -Wall -g -fsanitize=address -fsanitize=leak +LFLAGS=-fsanitize=address -fsanitize=leak -lm -main.o: main.c - gcc -c -Wall -Wextra -pedantic -fsanitize=address -fsanitize=leak $< -clean: - rm -f *.o main -rebuild: clean main \ No newline at end of file +main: tree.o main.o + $(cc) -o $@ $^ $(CFLAGS) $(LFLAGS) + +clean: + rm -f *.o *.x diff --git a/exam2/ex2/main b/exam2/ex2/main new file mode 100755 index 0000000000000000000000000000000000000000..76d13cef127266f7757a96ad2465312e35d058c4 GIT binary patch literal 39944 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 BGi(3= literal 0 HcmV?d00001 diff --git a/exam2/ex2/main.c b/exam2/ex2/main.c index 45422d4..931dbd8 100644 --- a/exam2/ex2/main.c +++ b/exam2/ex2/main.c @@ -1,29 +1,20 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> +#include "tree.h" -typedef struct _element { - char c; - struct _element *next; -} element; +int main() { -int main(int argc, char **argv) { + node_t *tree = bst_create(); + int input[15]; - // read user input - char str[16]; - scanf("%s", str); - int len = strlen(str); - // cli args - if (argc == 1) { - printf("need more arguments"); - return EXIT_FAILURE; + for(int i=0;i<15;i++){ + scanf("%d",&input[i]); + tree = bst_insert(tree, input[i]); } + + // manque de temps je fais l'affichage seulement - for (int i = 0; i < argc; i++) { - if (!strcmp(argv[i], "-c")) { - // do stuff with atof/atoi (argv[++i]) - } - } + bst_to_array_incr(tree); + bst_to_array_decr(tree); - return EXIT_SUCCESS; + + bst_destroy(tree); } \ No newline at end of file diff --git a/exam2/ex2/tree.c b/exam2/ex2/tree.c new file mode 100644 index 0000000..57348da --- /dev/null +++ b/exam2/ex2/tree.c @@ -0,0 +1,227 @@ +#include "tree.h" + +// typedef struct _node_t { +// int val; +// struct _node_t *left; +// struct _node_t *right; +// } node_t; + +node_t *test(node_t *tree) { + if (tree->left != NULL) { + printf("%d\n",tree->val); + return bst_find_min_node(tree->left); + } else { + return tree; + } +} + + +void incr(node_t *tree) { + + if (tree == NULL) { + return; + } + incr(tree->left); + printf("%d\n", tree->val); + + incr(tree->right); +} + +void swap(node_t* a,node_t*b){ + node_t tmp=*a; + *a=*b; + *b=tmp; +} +void reverse_tree(node_t* tree){ + if(tree==NULL){ + return; + } + if(tree->right!=NULL&&tree->left!=NULL){ + swap(tree->right,tree->left); + + } + reverse_tree(tree->right); + reverse_tree(tree->left); +} + +int* bst_to_array_incr(node_t *tree){ + //pas assez de temps donc j'affiche seulement les valeurs dans l'ordre + printf("ordre croissant:\n"); + incr(tree); + printf("\n"); + // int *values=malloc(sizeof(int)*15); + + return NULL; +} + +int* bst_to_array_decr(node_t *tree){ + //pareil + printf("ordre decroissant (presque):\n"); + reverse_tree(tree); + incr(tree); + // int *values=malloc(sizeof(int)*15); + + return NULL; +} + + +// peite gauche et plus grand droite +bool bst_is_empty(node_t *tree) { return tree == NULL; } + +static node_t *create_node(int val) { + node_t *node = malloc(sizeof(node_t)); + if (node == NULL) { // memory error + return NULL; + } + node->left = NULL; + node->right = NULL; + node->val = val; + return node; +} + +node_t *bst_create() { return NULL; } + +void bst_destroy(node_t *tree) { + if (!bst_is_empty(tree)) { + if (tree->left != NULL) { + bst_destroy(tree->left); + } + if (tree->right != NULL) { + bst_destroy(tree->right); + } + free(tree); + } +} + +void bst_print(node_t *tree, int depth) { // affiche l'arbre ordre croissant + + if (tree == NULL) { + return; + } + bst_print(tree->left, depth + 1); + for (int i = 0; i < depth; i++) { + printf("-------"); + } + printf(" %d \n\n", tree->val); + bst_print(tree->right, depth + 1); +} + +// insertion de val dans l'arbre et retourne l'arbre (ou NULL si problème) +node_t *bst_insert(node_t *tree, int val) { + + if (bst_is_empty(tree)) { // root + tree = create_node(val); + } else { + + if (val > tree->val) { // right + if (tree->right == NULL) { + tree->right = create_node(val); + } else { + tree->right = bst_insert(tree->right, val); + } + + } else { // left + if (tree->left == NULL) { + tree->left = create_node(val); + } else { + tree->left = bst_insert(tree->left, val); + } + } + } + return tree; +} + +// la valeur val est-elle présente dans l'arbre? +bool bst_is_present(node_t *tree, int val) { + return bst_search(tree, val) != NULL; +} + +// retourne le noeud où la valeur val se trouve (NULL si absent) +node_t *bst_search(node_t *tree, int val) { + + if (!bst_is_empty(tree)) { + + if (val == tree->val) { // found it + return tree; + } else if (val > tree->val) { // right + return bst_search(tree->right, val); + } else { // left + return bst_search(tree->left, val); + } + } + + return NULL; +} + +// l'arbre est-il un arbre binaire de recherche? +bool bst_is_bst(node_t *tree) { + if(tree==NULL){ + return true; + } + if (tree->left != NULL && tree->left->val > tree->val) { + return false; + } + + if (tree->right != NULL && tree->right->val < tree->val) { + return false; + } + return bst_is_bst(tree->left) && bst_is_bst(tree->right); +} + + +node_t *bst_find_min_node(node_t *tree) { + if (tree->left != NULL) { + return bst_find_min_node(tree->left); + } else { + return tree; + } +} + +int bst_find_min(node_t *tree) { return bst_find_min_node(tree)->val; } + +node_t *bst_find_max_node(node_t *tree) { + if (tree->right != NULL) { + return bst_find_min_node(tree->right); + } else { + return tree; + } +} + +int bst_find_max(node_t *tree) { return bst_find_max_node(tree)->val; } + +int count_child(node_t *node) { + int nb = (node->left != NULL) + (node->right != NULL); + // printf("%d child(s)\n", nb); + return nb; +} + +node_t *bst_delete(node_t *tree, int val) { + if (!bst_is_empty(tree)) { + + if (val > tree->val) { + tree->right = bst_delete(tree->right, val); // go right + + } else if (val < tree->val) { + tree->left = bst_delete(tree->left, val); // go left + + // found node + } else if (count_child(tree) == 2) { + + node_t *next = bst_find_min_node(tree->right); + tree->val = next->val; + tree->right = bst_delete(next, next->val); + + } else { // 1 or 0 childs + node_t *tmp = tree; + if (tmp->left != NULL) { // left + tree = tree->left; + } else if (tmp->right != NULL) { // right + tree = tree->right; + } else { + tree = NULL; + } + free(tmp); + } + } + return tree; +} diff --git a/exam2/ex2/tree.h b/exam2/ex2/tree.h new file mode 100644 index 0000000..cdadfd8 --- /dev/null +++ b/exam2/ex2/tree.h @@ -0,0 +1,49 @@ +#ifndef _STACK_H_ +#define _STACK_H_ + +#include <stdio.h> +#include <stdbool.h> +#include <malloc.h> + +typedef struct _node_t { +int val; +struct _node_t *left; +struct _node_t *right; +} node_t; + +//BINARY SEARCH TREE (BST) + +// Fonctions de création, destruction et affichage +node_t *bst_create(); // création d'un arbre vide (retourne NULL) +void bst_destroy(node_t *tree); // détruit l'arbre et vide la mémoire + +void bst_print(node_t *tree, int depth); // affiche l'arbre (voir plus bas) +// insertion de val dans l'arbre et retourne l'arbre (ou NULL si problème) +node_t *bst_insert(node_t *tree, int val); +// efface le premier élément contenant la valeur val dans l'arbre +// et retourne l'arbre (ne fait rien si val est absente) +node_t *bst_delete(node_t *tree, int val); +// la valeur val est-elle présente dans l'arbre? +bool bst_is_present(node_t *tree, int val); +// retourne le noeud où la valeur val se trouve (NULL si absent) +node_t *bst_search(node_t *tree, int val); +// l'arbre est-il un arbre binaire de recherche? +bool bst_is_bst(node_t *tree); +// retourne le noeud avec la valeur minimale de l'arbre (NULL s'il y a pas) +node_t *bst_find_min_node(node_t *tree); +// retourne la valeur la plus petite stockée dans l'arbre (ou MIN_INT) +int bst_find_min(node_t *tree); +// retourne le noeud avec la valeur maximale de l'arbre (NULL s'il y a pas) +node_t *bst_find_max_node(node_t *tree); +// retourne la valeur la plus grande stockée dans l'arbre (ou MAX_INT) +int bst_find_max(node_t *tree); + +int count_child(node_t *node); + +int* bst_to_array_incr(node_t *tree); + +int* bst_to_array_decr(node_t *tree); + +int* bst_find_min_and_free(node_t *tree); + +#endif \ No newline at end of file diff --git a/exam2/ex3/main b/exam2/ex3/main new file mode 100755 index 0000000000000000000000000000000000000000..2c97531137305d6eb4ad608dc6873c217d6fd24a GIT binary patch literal 27504 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 AxBvhE literal 0 HcmV?d00001 diff --git a/exam2/ex3/main.c b/exam2/ex3/main.c index 45422d4..e719885 100644 --- a/exam2/ex3/main.c +++ b/exam2/ex3/main.c @@ -2,28 +2,45 @@ #include <stdlib.h> #include <string.h> -typedef struct _element { - char c; - struct _element *next; -} element; - -int main(int argc, char **argv) { - - // read user input - char str[16]; - scanf("%s", str); - int len = strlen(str); - // cli args - if (argc == 1) { - printf("need more arguments"); - return EXIT_FAILURE; + +int my_strlen(char* str){ + int i=0; + while(str[i]!='\0'){ + i++; + } + return i; +} + +void hamming_distance(char*s1,char*s2){ + int len1=my_strlen(s1); + if(len1!=my_strlen(s2)){ + + printf("Distance %s - %s: Impossible\n",s1,s2); + return; } - for (int i = 0; i < argc; i++) { - if (!strcmp(argv[i], "-c")) { - // do stuff with atof/atoi (argv[++i]) + int cnt=0; + for(int i;i<len1;i++){ + if(s1[i]!=s2[i]){ + cnt++; } } + printf("Distance %s - %s: %d\n",s1,s2,cnt); +} + +int main() { + + char str0[40]; + char str1[40]; + char str2[40]; + scanf("%s", str0); + scanf("%s", str1); + scanf("%s", str2); + + hamming_distance(str0,str1); + hamming_distance(str0,str2); + hamming_distance(str1,str2); + printf("\n"); return EXIT_SUCCESS; } \ No newline at end of file diff --git a/exam2/ex4/main b/exam2/ex4/main new file mode 100755 index 0000000000000000000000000000000000000000..e3b7eb536cbb6ce444e753366e5aa654193209e6 GIT binary patch literal 28088 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 Q%)pThrWi8OG@x-A06jz;Jpcdz literal 0 HcmV?d00001 diff --git a/exam2/ex4/main.c b/exam2/ex4/main.c index 45422d4..dfd5e1c 100644 --- a/exam2/ex4/main.c +++ b/exam2/ex4/main.c @@ -2,28 +2,88 @@ #include <stdlib.h> #include <string.h> -typedef struct _element { - char c; - struct _element *next; -} element; - -int main(int argc, char **argv) { - - // read user input - char str[16]; - scanf("%s", str); - int len = strlen(str); - // cli args - if (argc == 1) { - printf("need more arguments"); - return EXIT_FAILURE; +typedef struct _etudiante { + char *name; + int hash; +} etudiante; + +etudiante* new_student(char* name){ + int len=strlen(name); + int hash=0; + for(int i=0;i<len;i++){ + hash+=(43*name[i])%len; } + etudiante *etu=malloc(sizeof(etudiante)); + etu->name=name; + etu->hash=hash; + return etu; +} + +etudiante* shallow_copy(etudiante* stu){ + return stu; +} + +etudiante* deep_copy(etudiante* stu){ + etudiante *etu=malloc(sizeof(etudiante)); + etu->name=stu->name; + etu->hash=stu->hash; + return etu; +} + +void print_student(etudiante* stu){ + printf("%s, %d\n",stu->name,stu->hash); +} - for (int i = 0; i < argc; i++) { - if (!strcmp(argv[i], "-c")) { - // do stuff with atof/atoi (argv[++i]) - } +void delete_student(etudiante* stu){ + free(stu); +} + +void set_name(etudiante* stu,char* newName){ + int len=strlen(newName); + int hash=0; + for(int i=0;i<len;i++){ + hash+=(43*newName[i])%len; } + stu->name=newName; + stu->hash=hash; +} + +void doStuffWithStudent(char* name){ + printf("welcome %s\n",name); + + etudiante *s = new_student(name); + print_student(s); + + etudiante* s_deep = deep_copy(s); + set_name(s_deep, "deep_student"); + + print_student(s_deep); + print_student(s); + + etudiante* s_shallow = shallow_copy(s); + set_name(s_shallow, "shallow_student"); + + print_student(s); + print_student(s_deep); + print_student(s_shallow); + + //free the students ! + delete_student(s); + delete_student(s_deep); + printf("\n"); +} + +int main() { + + char name1[40]; + char name2[40]; + scanf("%s", name1); + scanf("%s", name2); + + doStuffWithStudent(name1); + doStuffWithStudent(name2); + + return EXIT_SUCCESS; } \ No newline at end of file diff --git a/exam2/ex5/Makefile b/exam2/ex5/Makefile deleted file mode 100644 index 478f28e..0000000 --- a/exam2/ex5/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -main: main.o - gcc -o $@ $< -fsanitize=address -fsanitize=leak - -main.o: main.c - gcc -c -Wall -Wextra -pedantic -fsanitize=address -fsanitize=leak $< - -clean: - rm -f *.o main - -rebuild: clean main \ No newline at end of file diff --git a/exam2/ex5/main.c b/exam2/ex5/main.c deleted file mode 100644 index 45422d4..0000000 --- a/exam2/ex5/main.c +++ /dev/null @@ -1,29 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -typedef struct _element { - char c; - struct _element *next; -} element; - -int main(int argc, char **argv) { - - // read user input - char str[16]; - scanf("%s", str); - int len = strlen(str); - // cli args - if (argc == 1) { - printf("need more arguments"); - return EXIT_FAILURE; - } - - for (int i = 0; i < argc; i++) { - if (!strcmp(argv[i], "-c")) { - // do stuff with atof/atoi (argv[++i]) - } - } - - return EXIT_SUCCESS; -} \ No newline at end of file -- GitLab