aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/structures des données/td
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2025-09-19 12:16:41 +0200
committerAnhgelus Morhtuuzh <william@herges.fr>2025-09-19 12:16:41 +0200
commit5a08a4e1e055a0a702a54cfa867d7fdebf2c1ad7 (patch)
tree470e9aeb90b79f61beaab352fa0e394b9e76b11f /semestre 3/structures des données/td
parentcac7f3e868e98281f9f2b841101b09f02cf664fd (diff)
Cours du 15 au 19 septembre
Diffstat (limited to 'semestre 3/structures des données/td')
-rw-r--r--semestre 3/structures des données/td/.gitignore60
-rw-r--r--semestre 3/structures des données/td/td1/exo1.c15
-rw-r--r--semestre 3/structures des données/td/td1/exo2.c23
-rw-r--r--semestre 3/structures des données/td/td1/exo3.c15
-rw-r--r--semestre 3/structures des données/td/td1/exo4.md17
-rw-r--r--semestre 3/structures des données/td/td1/exo5/.gitignore1
-rw-r--r--semestre 3/structures des données/td/td1/exo5/A.c6
-rw-r--r--semestre 3/structures des données/td/td1/exo5/A.h7
-rw-r--r--semestre 3/structures des données/td/td1/exo5/B.c6
-rw-r--r--semestre 3/structures des données/td/td1/exo5/B.h7
-rw-r--r--semestre 3/structures des données/td/td1/exo5/Makefile12
-rw-r--r--semestre 3/structures des données/td/td1/exo5/prog.c8
12 files changed, 177 insertions, 0 deletions
diff --git a/semestre 3/structures des données/td/.gitignore b/semestre 3/structures des données/td/.gitignore
new file mode 100644
index 0000000..ca1cd41
--- /dev/null
+++ b/semestre 3/structures des données/td/.gitignore
@@ -0,0 +1,60 @@
+main
+
+# Created by https://www.toptal.com/developers/gitignore/api/c
+# Edit at https://www.toptal.com/developers/gitignore?templates=c
+
+### C ###
+# Prerequisites
+*.d
+
+# Object files
+*.o
+*.ko
+*.obj
+*.elf
+
+# Linker output
+*.ilk
+*.map
+*.exp
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Libraries
+*.lib
+*.a
+*.la
+*.lo
+
+# Shared objects (inc. Windows DLLs)
+*.dll
+*.so
+*.so.*
+*.dylib
+
+# Executables
+*.exe
+*.out
+*.app
+*.i*86
+*.x86_64
+*.hex
+
+# Debug files
+*.dSYM/
+*.su
+*.idb
+*.pdb
+
+# Kernel Module Compile Results
+*.mod*
+*.cmd
+.tmp_versions/
+modules.order
+Module.symvers
+Mkfile.old
+dkms.conf
+
+# End of https://www.toptal.com/developers/gitignore/api/c
diff --git a/semestre 3/structures des données/td/td1/exo1.c b/semestre 3/structures des données/td/td1/exo1.c
new file mode 100644
index 0000000..669589b
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo1.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+/* factorielle récursive */
+int xy(int n){
+ if (n) {
+ /* warum nicht ? */
+ return n*(xy(n-1));
+ } else {
+ return 1;
+ }
+}
+
+void main(void){
+ printf("%d", xy(5));
+}
diff --git a/semestre 3/structures des données/td/td1/exo2.c b/semestre 3/structures des données/td/td1/exo2.c
new file mode 100644
index 0000000..7b3acf7
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo2.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+/* incremente de 1 la valeur de 'p' */
+/* passer un arg en pointeur permet à une fonction de faire des effets de bord, comme retourner plusieurs valeurs */
+void incrementer(int *p){
+ (*p)++;
+}
+
+void main(void){
+ int *p;
+ int i = 1;
+
+ p = &i;
+ printf("%d\n", *p);
+
+ /* Cette suite de est illogique car on ne connait pas la valeur de 'p' avant l'affectation */
+ p = (int *) malloc(sizeof(int));
+ incrementer(p);
+ printf("%d\n", *p);
+
+ free(p);
+}
diff --git a/semestre 3/structures des données/td/td1/exo3.c b/semestre 3/structures des données/td/td1/exo3.c
new file mode 100644
index 0000000..1a790ad
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo3.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+
+void main(void){
+ /* le cast est très important pour le compilateur et le linter */
+ int *t = (int *) malloc(sizeof(int)*5) // car on souhaite un tableau de taille 5
+ /* acces à la 4e valeur */
+ int four = *(t+3)
+ free(t)
+
+ /* pour recuperer la taille d'un tableau, on est oblige de la garder qlq part en memoire
+ * on peut stocker la taille du tableau dans la premiere case (pas une bonne idee)
+ * on rajoute un caractere de fin (pas une bunne idee non plus, de mon pov en tout cas)
+ * on construit un struct contenant le tableau et sa taille
+ */
+}
diff --git a/semestre 3/structures des données/td/td1/exo4.md b/semestre 3/structures des données/td/td1/exo4.md
new file mode 100644
index 0000000..ea4e5b8
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo4.md
@@ -0,0 +1,17 @@
+---
+tags:
+ - sorbonne
+ - informatique
+ - structure-des-données
+ - td
+Semestre: 3
+---
+Code 1 est en $\Theta (1)$.
+
+Code 2 est en $\mathcal{O} (n)$ et en $\Omega(1)$.
+
+Code 3 est en $\mathcal{O} (n\times m)$ et en $\Omega(\min\{n,m\})$ car :
+- `equals_tab` renvoie 0 car elle a fait $1$ tours, donc on fait $n$ tours dans `equals_one_line`
+- `equals_tab` renvoie 1 car elle a fait $m$ tours, donc on fait $1$ tours dans `equals_one_line`
+
+
diff --git a/semestre 3/structures des données/td/td1/exo5/.gitignore b/semestre 3/structures des données/td/td1/exo5/.gitignore
new file mode 100644
index 0000000..ea17491
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo5/.gitignore
@@ -0,0 +1 @@
+prog
diff --git a/semestre 3/structures des données/td/td1/exo5/A.c b/semestre 3/structures des données/td/td1/exo5/A.c
new file mode 100644
index 0000000..a18d17b
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo5/A.c
@@ -0,0 +1,6 @@
+#include "A.h"
+
+int f(int n){
+ /* do some funky stuff */
+ return n;
+}
diff --git a/semestre 3/structures des données/td/td1/exo5/A.h b/semestre 3/structures des données/td/td1/exo5/A.h
new file mode 100644
index 0000000..5e5fa02
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo5/A.h
@@ -0,0 +1,7 @@
+#ifndef A_H
+#define A_H
+
+int f(int);
+
+#endif
+
diff --git a/semestre 3/structures des données/td/td1/exo5/B.c b/semestre 3/structures des données/td/td1/exo5/B.c
new file mode 100644
index 0000000..2fd27ef
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo5/B.c
@@ -0,0 +1,6 @@
+#include "B.h"
+#include "A.h"
+
+void g(int p){
+ /* do some funky stuff again */
+}
diff --git a/semestre 3/structures des données/td/td1/exo5/B.h b/semestre 3/structures des données/td/td1/exo5/B.h
new file mode 100644
index 0000000..a863ca7
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo5/B.h
@@ -0,0 +1,7 @@
+#ifndef B_H
+#define B_H
+#include "A.h"
+
+void g(int);
+
+#endif
diff --git a/semestre 3/structures des données/td/td1/exo5/Makefile b/semestre 3/structures des données/td/td1/exo5/Makefile
new file mode 100644
index 0000000..691f09b
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo5/Makefile
@@ -0,0 +1,12 @@
+all: prog.o A.o B.o
+ gcc -o prog A.o B.o prog.o
+
+prog.o: prog.c
+ gcc -c prog.c
+
+A.o: A.h A.c
+ gcc -c A.h A.c
+
+B.o: B.h B.c
+ gcc -c B.h B.c
+
diff --git a/semestre 3/structures des données/td/td1/exo5/prog.c b/semestre 3/structures des données/td/td1/exo5/prog.c
new file mode 100644
index 0000000..f015ccc
--- /dev/null
+++ b/semestre 3/structures des données/td/td1/exo5/prog.c
@@ -0,0 +1,8 @@
+#include "A.h"
+#include "B.h"
+
+void main(void){
+ int n;
+ n = f(n);
+ g(n);
+}