From 964df6c718c93f7cf9c668362ae69e4e98f2ad92 Mon Sep 17 00:00:00 2001 From: augustin64 Date: Fri, 2 Feb 2024 11:08:48 +0100 Subject: [PATCH] Add TD1 --- TD/TD1/sujet.pdf | Bin 0 -> 47874 bytes TD/TD1/td1_lucas/ex_1/ex_1.sh | 5 ++ TD/TD1/td1_lucas/ex_2/ex_2a.sh | 5 ++ TD/TD1/td1_lucas/ex_2/ex_2b.sh | 8 +++ TD/TD1/td1_lucas/ex_2/sometext.txt | 89 +++++++++++++++++++++++++ TD/TD1/td1_lucas/ex_3/ex_3a.sh | 9 +++ TD/TD1/td1_lucas/ex_3/ex_3b.sh | 5 ++ TD/TD1/td1_lucas/ex_4/Makefile | 7 ++ TD/TD1/td1_lucas/ex_4/ex_4.c | 16 +++++ TD/TD1/td1_lucas/ex_6/Makefile | 7 ++ TD/TD1/td1_lucas/ex_6/ex_6.c | 79 ++++++++++++++++++++++ TD/TD1/td1_lucas/ex_6/include/colors.h | 15 +++++ TD/TD1/td1_lucas/ex_6/include/ex_6.h | 13 ++++ 13 files changed, 258 insertions(+) create mode 100644 TD/TD1/sujet.pdf create mode 100755 TD/TD1/td1_lucas/ex_1/ex_1.sh create mode 100755 TD/TD1/td1_lucas/ex_2/ex_2a.sh create mode 100755 TD/TD1/td1_lucas/ex_2/ex_2b.sh create mode 100644 TD/TD1/td1_lucas/ex_2/sometext.txt create mode 100755 TD/TD1/td1_lucas/ex_3/ex_3a.sh create mode 100755 TD/TD1/td1_lucas/ex_3/ex_3b.sh create mode 100644 TD/TD1/td1_lucas/ex_4/Makefile create mode 100644 TD/TD1/td1_lucas/ex_4/ex_4.c create mode 100644 TD/TD1/td1_lucas/ex_6/Makefile create mode 100644 TD/TD1/td1_lucas/ex_6/ex_6.c create mode 100644 TD/TD1/td1_lucas/ex_6/include/colors.h create mode 100644 TD/TD1/td1_lucas/ex_6/include/ex_6.h diff --git a/TD/TD1/sujet.pdf b/TD/TD1/sujet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..59de01677ea7fa30938ce2e19686918014a0c7ec GIT binary patch literal 47874 zcmdqJ1ymecw=Rl%a1GYDOXCm-ZV66scXto&1lQp19^BpC-7UBTC)k7Ro&E1$-Z}S- z_r@J}-0te`TC--&sx{ZDRja;l&L)!)5}^aqv%-9#+Z))v{F>|78weTbS?L?Vy?+m9XK!nuV*%%!a;&alwzc=eJEq?|cp}JB0~r6g}S@S1h_D_16PrmLKZ{B%6e-Et7xLLAV zxUpIrUTyKL@(e>NcTXwgsQik91)HyeYLdtp?%l8tyAdTfYdzyL!ES)cS(b`1Odd7< zfy_?^5TCjR-?dt1=y??~O^sNLfQ_d~Wf_iYW8J`#R}p0!`VsBRJd*)qUi5GRY2}yW zUXhRF&246|?-Tm1mu}GaDxx}w8wu#t{oYqwpyN)|80}f3>_(5&)tz+<&0_O@STg_( zSwI{@+kM_MOuOQ-n~j>gLhpuwRlMOjrf!nG&r5d_5v*o}SPX8(4>}Dno2!NHOIZm= zNzxt2R_663tB5DzWxLUP<_#gxnLtLSBL%!&7Q#;>9}!;j#!(-BL>FkR<@C#M(g_)@ zh0dT{jSwr29bX|rG#=ybrPEm9@s_6sF42Rf&Q3(U+uH*@xc?kf%cBGNSbq$5LzEam zC6-$g^(hoH8$BY&nsl+0R%EfgzP(y_kxHBmQIHf$#FXaY@gfR17=fZ!!V%pe5+Kgv z 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 $1/ex_1/test/results/res1.txt \ No newline at end of file diff --git a/TD/TD1/td1_lucas/ex_3/ex_3b.sh b/TD/TD1/td1_lucas/ex_3/ex_3b.sh new file mode 100755 index 0000000..f3cae4e --- /dev/null +++ b/TD/TD1/td1_lucas/ex_3/ex_3b.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +[[ $1 ]] || exit 1 + +cd $1 && find ~+ -name '*.txt' -exec ls {} \; \ No newline at end of file diff --git a/TD/TD1/td1_lucas/ex_4/Makefile b/TD/TD1/td1_lucas/ex_4/Makefile new file mode 100644 index 0000000..76effac --- /dev/null +++ b/TD/TD1/td1_lucas/ex_4/Makefile @@ -0,0 +1,7 @@ +CFLAGS = -Wall -Wextra -g -O3 + +ex_4: ex_4.c + gcc $^ -o $@ $(CFLAGS) + +clean: + rm -f ex_4 \ No newline at end of file diff --git a/TD/TD1/td1_lucas/ex_4/ex_4.c b/TD/TD1/td1_lucas/ex_4/ex_4.c new file mode 100644 index 0000000..45af693 --- /dev/null +++ b/TD/TD1/td1_lucas/ex_4/ex_4.c @@ -0,0 +1,16 @@ +#include + +void show(int *a, int b) { + *a = (*a) + 5; + b = b + 5; +} + +int main() { + int a = 0; + int b = 0; + + show(&a, b); + printf("Référence: %d, Valeur: %d\n", a, b); + + return 0; +} \ No newline at end of file diff --git a/TD/TD1/td1_lucas/ex_6/Makefile b/TD/TD1/td1_lucas/ex_6/Makefile new file mode 100644 index 0000000..a5fe9c2 --- /dev/null +++ b/TD/TD1/td1_lucas/ex_6/Makefile @@ -0,0 +1,7 @@ +CFLAGS = -Wall -Wextra -g -O3 + +ex_6: ex_6.c + gcc $^ -o $@ $(CFLAGS) + +clean: + rm -f ex_6 \ No newline at end of file diff --git a/TD/TD1/td1_lucas/ex_6/ex_6.c b/TD/TD1/td1_lucas/ex_6/ex_6.c new file mode 100644 index 0000000..b75c14e --- /dev/null +++ b/TD/TD1/td1_lucas/ex_6/ex_6.c @@ -0,0 +1,79 @@ +#include +#include +#include + +#include "include/ex_6.h" +#include "include/colors.h" + + +event_t* new_event(time_t time, char* desc) { + event_t* new = malloc(sizeof(event_t)); + new->desc = malloc((strlen(desc)+1)*sizeof(char)); + new->time = time; + new->next = NULL; + + strcpy(new->desc, desc); + + return new; +} + + +event_t* insert_event(time_t time, char* desc, event_t* events) { + if (events && time > events->time) { + events->next = insert_event(time, desc, events->next); + return events; + } + + event_t* new = new_event(time, desc); + new->next = events; + + return new; +} + +void show_events(event_t* event) { + if (!event) + return; + + printf("Event: " BOLD "%s" RESET "\n", event->desc); + printf("Date: " BOLD "%s" RESET "\n", ctime(&event->time)); + + show_events(event->next); +} + + +void free_events(event_t* event) { + if (!event) + return; + + free_events(event->next); + + free(event->desc); + free(event); +} + +time_t time_of_string(char* string) { + struct tm date = {0}; + if (sscanf(string, "%d-%d-%d %dh%d", &date.tm_mday, &date.tm_mon, &date.tm_year, &date.tm_hour, &date.tm_min) == 5) { + date.tm_mon--; + date.tm_year -= 1900; + + return mktime(&date); + } + + printf(BOLD RED "Failed to parse date !\n" RESET); + return (-1); +} + +int main() { + event_t* events = NULL; + + events = insert_event(time_of_string("19-03-2024 10h15"), "TP ArchiSys", events); + events = insert_event(time_of_string("21-03-2024 8h05"), "Cours ArchiSys", events); + events = insert_event(time_of_string("12-03-2024 10h15"), "TP ArchiSys", events); + + show_events(events); + + free_events(events); + + return 0; +} \ No newline at end of file diff --git a/TD/TD1/td1_lucas/ex_6/include/colors.h b/TD/TD1/td1_lucas/ex_6/include/colors.h new file mode 100644 index 0000000..ce744e3 --- /dev/null +++ b/TD/TD1/td1_lucas/ex_6/include/colors.h @@ -0,0 +1,15 @@ +#ifndef DEF_COLORS_H +#define DEF_COLORS_H + +#define RESET "\033[0m" +#define BLACK "\033[30m" /* Black */ +#define RED "\033[31m" /* Red */ +#define GREEN "\033[32m" /* Green */ +#define YELLOW "\033[33m" /* Yellow */ +#define BLUE "\033[34m" /* Blue */ +#define MAGENTA "\033[35m" /* Magenta */ +#define CYAN "\033[36m" /* Cyan */ +#define WHITE "\033[37m" /* White */ +#define BOLD "\033[1m" /* BOLD */ + +#endif \ No newline at end of file diff --git a/TD/TD1/td1_lucas/ex_6/include/ex_6.h b/TD/TD1/td1_lucas/ex_6/include/ex_6.h new file mode 100644 index 0000000..a471631 --- /dev/null +++ b/TD/TD1/td1_lucas/ex_6/include/ex_6.h @@ -0,0 +1,13 @@ +#ifndef DEF_EX_6_H +#define DEF_EX_6_H + +#include + + +typedef struct event { + time_t time; + char* desc; + struct event* next; +} event_t; + +#endif \ No newline at end of file