Skip to content
Extraits de code Groupes Projets
Valider 5d961ea7 rédigé par Laurent Paucot's avatar Laurent Paucot
Parcourir les fichiers

long ok, improved makefile

parent 8669ec14
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #2047 réussi
...@@ -19,4 +19,10 @@ mrproper: clean ...@@ -19,4 +19,10 @@ mrproper: clean
rm -rf run rm -rf run
prog : run prog : run
./run ./run
\ No newline at end of file
val : run
valgrind ./run
cpp : run.c
cppcheck run.c
\ No newline at end of file
# lepl1503-2020-groupe-M2 # lepl1503-2020-groupe-M2
Pour compiler et exécuter (tester) le programme : make prog mrproper 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
14 2 7 14 7 2
13 13
100 2 5 100 5 2
1225 7 5
5946 991 3 2
198354 2543 13 3 2
14 14
13 13
100 100
1225
5946
198354
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
#include <string.h> #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 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 int is_prime(long 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 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 if (is_div(number,i) != 0) { // si i peut diviser number
return 0 ; //renvoi 0 => FAUX return 0 ; //renvoi 0 => FAUX
} }
...@@ -24,7 +24,7 @@ int is_prime(int number) { // Vérifie si number est un nombre premier. Return 1 ...@@ -24,7 +24,7 @@ int is_prime(int number) { // Vérifie si number est un nombre premier. Return 1
} }
typedef struct node{ typedef struct node{
int value; long value;
struct node *next; struct node *next;
}node_t; }node_t;
...@@ -33,7 +33,7 @@ typedef struct queue{ ...@@ -33,7 +33,7 @@ typedef struct queue{
int size; int size;
}queue_t; }queue_t;
queue_t* enqueue(queue_t* q, int val){ queue_t* enqueue(queue_t* q, long val){
struct node new_node; struct node new_node;
new_node.value = val; new_node.value = val;
...@@ -59,7 +59,7 @@ queue_t* enqueue(queue_t* q, int 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; struct queue new_queue;
new_queue.size = 0; new_queue.size = 0;
...@@ -71,17 +71,17 @@ queue_t* prime_divs(int number){ ...@@ -71,17 +71,17 @@ queue_t* prime_divs(int number){
if (ptr == NULL){return NULL;} if (ptr == NULL){return NULL;}
*ptr = new_queue; *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)){ if (is_prime(i) == 1 && is_div(number, i)){
ptr = enqueue(ptr,i); ptr = enqueue(ptr,i);
if (ptr == NULL){return NULL;} if (ptr == NULL){return NULL;}
} }
} }
//ptr = enqueue(ptr,-1); //ptr = enqueue(ptr,-1);
//if (ptr == NULL){return NULL;} //if (ptr == NULL){return NULL;}
return ptr; return ptr;
} }
...@@ -107,7 +107,8 @@ int run (char *input,char *output){ ...@@ -107,7 +107,8 @@ int run (char *input,char *output){
struct queue *pr_divs; struct queue *pr_divs;
pr_divs = malloc(sizeof(queue_t)); pr_divs = malloc(sizeof(queue_t));
if (pr_divs == NULL){return -1;} if (pr_divs == NULL){return -1;}
pr_divs = prime_divs(atoi(chaine)); char *c;
pr_divs = prime_divs(strtol(chaine,&c,10));
char *ptr; char *ptr;
ptr = malloc(50); ptr = malloc(50);
...@@ -115,11 +116,13 @@ int run (char *input,char *output){ ...@@ -115,11 +116,13 @@ int run (char *input,char *output){
*ptr = '\0'; *ptr = '\0';
struct node *current; struct node *current;
current = malloc(sizeof(node_t)); current = malloc(sizeof(node_t));
if (current == NULL){return -1;}
*current = *pr_divs->tail; *current = *pr_divs->tail;
current = current->next;
fprintf(file2,"%s",chaine); fprintf(file2,"%s",chaine);
for (int i = 0; i < pr_divs->size; i++) for (int i = 0; i < pr_divs->size; i++)
{ {
fprintf(file2," %d",current->value); fprintf(file2," %ld",current->value);
current = current->next; current = current->next;
} }
fputc('\n',file2); fputc('\n',file2);
...@@ -133,9 +136,9 @@ int run (char *input,char *output){ ...@@ -133,9 +136,9 @@ int run (char *input,char *output){
} }
/* int main(){ /* int main() {
int err = run("input.txt","actual_output.txt"); int err = run("input.txt", "actual_output.txt");
return err; return err;
} */ } */
#ifndef RUN #ifndef RUN
#define RUN #define RUN
int is_div(int number, int i); int is_div(long number, long i);
int is_prime(int number); int is_prime(long number);
typedef struct node{ typedef struct node{
int value; long value;
struct node *next; struct node *next;
}node_t; }node_t;
typedef struct queue{ typedef struct queue{
struct node *tail; struct node *tail;
int size; int size;
}queue_t; }queue_t;
int enqueue(queue_t* q, int val); int enqueue(queue_t* q, long val);
queue_t* prime_divs(int number); queue_t* prime_divs(long number);
int run (char *input,char *output); int run (char *input,char *output);
......
...@@ -44,8 +44,8 @@ void file_test(void){ ...@@ -44,8 +44,8 @@ void file_test(void){
while (fgets(chaine1,50,file1) != NULL && fgets(chaine2,50,file2) != NULL) while (fgets(chaine1,50,file1) != NULL && fgets(chaine2,50,file2) != NULL)
{ {
printf("%d\n",chaine1[2]); /* printf("%d\n",chaine1[2]);
printf("%d\n",chaine2[2]); printf("%d\n",chaine2[2]); */
CU_ASSERT_STRING_EQUAL(chaine1,chaine2); CU_ASSERT_STRING_EQUAL(chaine1,chaine2);
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter