diff --git a/Makefile b/Makefile index 4549cfa3264aa69df91cb300fe9f6f7cfe0a9e1b..021a54b0f64f3ac985a57f0a36b9b3154801077c 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ test.o : test.c run.h clean : - rm -rf *.o + rm -rf *.o mrproper: clean - rm -rf run + rm -rf run diff --git a/run b/run new file mode 100755 index 0000000000000000000000000000000000000000..f6f05044826d3e4910610b1ee7c7844941444e78 Binary files /dev/null and b/run differ diff --git a/run.c b/run.c index d6df98ed804e3f83277e19648938740be9a9cf18..b76eb5fa9425d02bd8dec53952405ac3f4152960 100644 --- a/run.c +++ b/run.c @@ -1,6 +1,9 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <fcntl.h> +#include <unistd.h> +#include <sys/stat.h> int is_div(int number, int 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 @@ -23,10 +26,12 @@ int* prime_divs(int number){ ptr[1] = 0; int i; + int len = 0; for (i = 2; i < number; i++){ if (is_prime(i) == 1 && is_div(number, i)){ ptr[i] = i; + len++; } else { @@ -35,7 +40,20 @@ int* prime_divs(int number){ } ptr[i] = -1; - return ptr; + int *result; + result = malloc(sizeof(int)*len +sizeof(int)); + int j =0; + for (int i = 0; ptr[i] != -1; i++) + { + if(ptr[i] != 0){ + result[j] = ptr[i]; + j++; + } + + } + result[j] = -1; + free(ptr); + return result; } @@ -52,6 +70,41 @@ void afficherListe(int* tab) { // afficher la liste } +int run (char *input,char *output){ + + FILE *file1 = NULL; + FILE *file2 = NULL; + + char chaine[15]; + + file1 = fopen(input,"r"); + if (file1 == NULL){return -1;} + + file2 = fopen(output,"w+"); + if (file2 == NULL){ + fclose(file1); + return -1; + } + + while (fgets(chaine,15,file1) != NULL){ + + int *pr_divs = prime_divs(atoi(chaine)); + fprintf(file2,"%s ",chaine); + for (int i = 0; pr_divs[i] != -1; i++) + { + fprintf(file2,"%d ",pr_divs[i]); + } + fputc('\n',file2); + + } + + fclose(file1); + fclose(file2); + + return 0; + +} + /* int main() { // test pour is_div(int number, int i) int number = 10 ;