From f0bea494e703ed780f719f2231e02cc6cbb9c8c1 Mon Sep 17 00:00:00 2001
From: "leo.harb" <leo.harb@etu-ge.ch>
Date: Tue, 24 Jan 2023 15:59:28 +0100
Subject: [PATCH] =?UTF-8?q?termin=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ex1/ex1.c | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++---
ex3/ex3.c | 2 +-
2 files changed, 155 insertions(+), 9 deletions(-)
diff --git a/ex1/ex1.c b/ex1/ex1.c
index fa0a47c..0687cd1 100644
--- a/ex1/ex1.c
+++ b/ex1/ex1.c
@@ -1,10 +1,11 @@
// lien du git : https://githepia.hesge.ch/leo.harb/examen_programmation_2023
#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
typedef struct element_t
{
- struct element_t *prev;
- float value;
+ int value;
struct element_t *next;
} element;
@@ -14,14 +15,159 @@ typedef struct ll_t
element *pos;
}ll;
+ll ll_create(){
+ ll res;
+ res.head = NULL;
+ res.pos = NULL;
+ return res;
+}
+
+void ll_destroy(ll *list){
+ list->pos = list->head;
+ while (list->pos != NULL)
+ {
+ element *tmp = list->pos->next;
+ free(list->pos);
+ list->pos = tmp;
+ }
+ list->head = NULL;
+ list->pos = NULL;
+}
+
+bool ll_is_empty(ll list){
+ return list.head == NULL;
+}
+
+// Est-ce que pos est le 1er élément?
+bool ll_is_head(ll list){
+ return list.pos == list.head;
+}
+
+// Est-ce que pos est le dernier élément?
+bool ll_is_tail(ll list){
+ return list.pos->next == NULL;
+}
+
+// data est-elle dans la liste?
+bool ll_is_present(ll list, float data){
+ while (list.pos->next != NULL)
+ {
+ if(list.pos->value == data){
+ return true;
+ }
+ list.pos = list.pos->next;
+ }
+ return false;
+}
+
+void ll_push(ll *list, int data){
+ element *el = (element*)malloc(sizeof(element));
+ el->value = data;
+ el->next = list->head;
+ list->head = el;
+ list->pos = el;
+}
+
+void ll_insert(ll *list, int data){
+ element *el = (element*)malloc(sizeof(element));
+ if(list->pos == list->head){
+ list->head = el;
+ }
+ el->next = list->pos;
+ element *tmp = list->head;
+ while (tmp->next!=list->pos);
+ {
+ tmp = tmp->next;
+ }
+ tmp->next = el;
+}
+
+// affiche la liste
+void ll_print(ll *list){
+ while (list->pos != NULL)
+ {
+ printf("%f ", list->pos->value);
+ list->pos = list->pos->next;
+ }
+}
+
+bool ll_contains(ll *list, int data){
+ element* tmp = list->head;
+ while (tmp != NULL)
+ {
+ if(tmp->value == data){
+ return true;
+ }
+ }
+ return false;
+}
+
+void ll_sort_in(ll *list1, ll *list2, ll *res){
+ list1->pos = list1->head;
+ res->pos = res->head;
+ while (list1->pos != NULL)
+ {
+ if(!ll_contains(res, list1->pos->value)){
+ while (res->pos->value <= list1->pos->value)
+ {
+ res->pos = res->pos->next;
+ }
+ ll_insert(res, list1->pos->value);
+ }
+ list1->pos = list1->pos->next;
+ }
+ while (list2->pos != NULL)
+ {
+ if(!ll_contains(res, list2->pos->value)){
+ while (res->pos->value <= list2->pos->value)
+ {
+ res->pos = res->pos->next;
+ }
+ ll_insert(res, list2->pos->value);
+ }
+ list2->pos = list2->pos->next;
+ }
+}
+
int main(){
int len1 = 0;
int len2 = 0;
- int c = 0,r = 0;
- char cmd = 0;
- char entry[10];
- printf("Etrez la liste 1:\n");
- scanf("%[^\n]%*c", entry);
- sscanf(entry, "%d %s", &cmd, &c, &r);
+ float values1[256];
+ float values2[256];
+ int left = 0;
+ char string1[256];
+ char string2[256];
+
+ printf("Entrez la liste 1:");
+ scanf("%[^\n]%*c", string1);
+
+ float temp1;
+ char *p1 = string1;
+ int cpt1 = 0;
+ while(sscanf(p, "%f%n", &temp1, &left) == 1) {
+ values1[cpt1] = temp1;
+ p += left;
+ cpt1++;
+ }
+
+ printf("Entrez la liste 2:");
+ scanf("%[^\n]%*c", string1);
+ float temp2;
+ char *p2 = string2;
+ int cpt2 = 0;
+ while(sscanf(p, "%f%n", &temp2, &left) == 1) {
+ values1[cpt1] = temp2;
+ p += left;
+ cpt1++;
+ }
+
+
+ ll list1 = ll_create();
+ ll list2 = ll_create();
+ ll res = ll_create();
+
+
+ dll_print(&list);
+ dll_destroy(&list);
return 0;
}
\ No newline at end of file
diff --git a/ex3/ex3.c b/ex3/ex3.c
index c56c1c2..7721731 100644
--- a/ex3/ex3.c
+++ b/ex3/ex3.c
@@ -90,7 +90,7 @@ int main() {
int left = 0;
char string[256];
- printf("Liste d'entiers: \n");
+ printf("Liste d'entiers: ");
scanf("%[^\n]%*c", string);
float temp;
--
GitLab