From 5d961ea7711aa37cad03e7bde70932c7f83a7bba Mon Sep 17 00:00:00 2001 From: lpaucot_uclouvain <laurent.paucot@student.uclouvain.be> Date: Thu, 19 Mar 2020 07:57:26 +0100 Subject: [PATCH] long ok, improved makefile --- Makefile | 8 +++++++- README.md | 4 ++++ expected_output.txt | 7 +++++-- input.txt | 3 +++ run.c | 37 ++++++++++++++++++++----------------- run.h | 10 +++++----- test.c | 4 ++-- 7 files changed, 46 insertions(+), 27 deletions(-) diff --git a/Makefile b/Makefile index 50868ee..e79082f 100644 --- a/Makefile +++ b/Makefile @@ -19,4 +19,10 @@ mrproper: clean rm -rf run prog : run - ./run \ No newline at end of file + ./run + +val : run + valgrind ./run + +cpp : run.c + cppcheck run.c \ No newline at end of file diff --git a/README.md b/README.md index f92c83c..5395b1b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ # lepl1503-2020-groupe-M2 Pour compiler et exécuter (tester) le programme : make prog mrproper + +Pour compiler et effectuer une analyse avec "Valgrind" : make val mrproper + +Pour compiler et effctuer une analyse avec "cppcheck" : make cpp diff --git a/expected_output.txt b/expected_output.txt index 4da4b67..f87b24f 100644 --- a/expected_output.txt +++ b/expected_output.txt @@ -1,3 +1,6 @@ -14 2 7 +14 7 2 13 -100 2 5 +100 5 2 +1225 7 5 +5946 991 3 2 +198354 2543 13 3 2 diff --git a/input.txt b/input.txt index d2ffa86..89bd677 100644 --- a/input.txt +++ b/input.txt @@ -1,3 +1,6 @@ 14 13 100 +1225 +5946 +198354 diff --git a/run.c b/run.c index 0f3f34b..7094303 100644 --- a/run.c +++ b/run.c @@ -10,12 +10,12 @@ #include <string.h> -int is_div(int number, int i) { // Vérifie si i est un diviseur de number. +int is_div(long number, long i) { // Vérifie si i est un diviseur de number. return (number % i == 0) ; // revoi 0 si le nombre n'est pas divisible par i et 1 si il est divisible } -int is_prime(int number) { // Vérifie si number est un nombre premier. Return 1 si il est premier, 0 sinon - for (int i = 2 ; i < number ; i++) { //regarde les differents nombres pouvant etre diviser number +int is_prime(long number) { // Vérifie si number est un nombre premier. Return 1 si il est premier, 0 sinon + for (long i = 2 ; i <= (number/2); i++) { //regarde les differents nombres pouvant etre diviser number if (is_div(number,i) != 0) { // si i peut diviser number return 0 ; //renvoi 0 => FAUX } @@ -24,7 +24,7 @@ int is_prime(int number) { // Vérifie si number est un nombre premier. Return 1 } typedef struct node{ - int value; + long value; struct node *next; }node_t; @@ -33,7 +33,7 @@ typedef struct queue{ int size; }queue_t; -queue_t* enqueue(queue_t* q, int val){ +queue_t* enqueue(queue_t* q, long val){ struct node new_node; new_node.value = val; @@ -59,7 +59,7 @@ queue_t* enqueue(queue_t* q, int val){ } -queue_t* prime_divs(int number){ +queue_t* prime_divs(long number){ struct queue new_queue; new_queue.size = 0; @@ -71,17 +71,17 @@ queue_t* prime_divs(int number){ if (ptr == NULL){return NULL;} *ptr = new_queue; - for (int i = 2; i < number; i++){ + for (long i = 2; i < number; i++){ if (is_prime(i) == 1 && is_div(number, i)){ ptr = enqueue(ptr,i); if (ptr == NULL){return NULL;} } - } - //ptr = enqueue(ptr,-1); - //if (ptr == NULL){return NULL;} + } + //ptr = enqueue(ptr,-1); + //if (ptr == NULL){return NULL;} - return ptr; + return ptr; } @@ -107,7 +107,8 @@ int run (char *input,char *output){ struct queue *pr_divs; pr_divs = malloc(sizeof(queue_t)); if (pr_divs == NULL){return -1;} - pr_divs = prime_divs(atoi(chaine)); + char *c; + pr_divs = prime_divs(strtol(chaine,&c,10)); char *ptr; ptr = malloc(50); @@ -115,11 +116,13 @@ int run (char *input,char *output){ *ptr = '\0'; struct node *current; current = malloc(sizeof(node_t)); + if (current == NULL){return -1;} *current = *pr_divs->tail; + current = current->next; fprintf(file2,"%s",chaine); for (int i = 0; i < pr_divs->size; i++) { - fprintf(file2," %d",current->value); + fprintf(file2," %ld",current->value); current = current->next; } fputc('\n',file2); @@ -133,9 +136,9 @@ int run (char *input,char *output){ } -/* int main(){ - int err = run("input.txt","actual_output.txt"); + /* int main() { + int err = run("input.txt", "actual_output.txt"); - return err; -} */ + return err; + } */ diff --git a/run.h b/run.h index f3159ba..090f754 100644 --- a/run.h +++ b/run.h @@ -1,18 +1,18 @@ #ifndef RUN #define RUN -int is_div(int number, int i); -int is_prime(int number); +int is_div(long number, long i); +int is_prime(long number); typedef struct node{ - int value; + long value; struct node *next; }node_t; typedef struct queue{ struct node *tail; int size; }queue_t; -int enqueue(queue_t* q, int val); -queue_t* prime_divs(int number); +int enqueue(queue_t* q, long val); +queue_t* prime_divs(long number); int run (char *input,char *output); diff --git a/test.c b/test.c index c3840f3..bdef258 100644 --- a/test.c +++ b/test.c @@ -44,8 +44,8 @@ void file_test(void){ while (fgets(chaine1,50,file1) != NULL && fgets(chaine2,50,file2) != NULL) { - printf("%d\n",chaine1[2]); - printf("%d\n",chaine2[2]); + /* printf("%d\n",chaine1[2]); + printf("%d\n",chaine2[2]); */ CU_ASSERT_STRING_EQUAL(chaine1,chaine2); } -- GitLab