commit 0612a4033fe6f88e3e9117af965b27d1aebb79bb Author: bridja Date: Wed Oct 15 17:52:28 2025 +0200 Add: Evaluation file diff --git a/Ex1/a.out b/Ex1/a.out new file mode 100755 index 0000000..5f3265e Binary files /dev/null and b/Ex1/a.out differ diff --git a/Ex1/racineCarree.c b/Ex1/racineCarree.c new file mode 100644 index 0000000..f30a617 --- /dev/null +++ b/Ex1/racineCarree.c @@ -0,0 +1,67 @@ +#include +#include + + + +/* Marche pas la precision pour enlver avec -1*/ + + + +int racinecarre(int n){ + /* int x = n/4; /* Precision pour essayer de se rapprocher*/ + + if (n < 0){ + return -1; + } + + for(int i = 0; i <= n; i++ ){ + if (i * i == n) { /* 2 * 2 = 4 */ + return i; + } + if (i * i > n) { + break; + } + /*x = (x + ( n / x)) /2;*/ + } + return -1; + +} + + + + +int racineCarreeTab(int tableau[], int taille, int resultat[]) { + for (int i = 0; i < taille; i++) { + resultat[i] = racinecarre(tableau[i]); + } +} + + + + +int main(void) +{ + int n = 10; + int ans = racinecarre(n); + printf("%d\n", ans); + + int tab1[] = {9, 25, 4}; + int resultat1[3]; + racineCarreeTab(tab1, 3, resultat1); + printf("racineCarreeTab([9,25,4]) = %d , %d , %d ", resultat1[0], resultat1[1], resultat1[2]); + printf("\n"); + + int tab2[] = {10, 36,-1}; + int resultat2[3]; + racineCarreeTab(tab2, 3, resultat2); + printf("racineCarreeTab([10, 36,-1]) = %d, %d, %d ", resultat2[0], resultat2[1], resultat2[2]); + + printf("\n"); + + + + return 0; +} + + + diff --git a/Ex2/Readme.md b/Ex2/Readme.md new file mode 100644 index 0000000..d755601 --- /dev/null +++ b/Ex2/Readme.md @@ -0,0 +1,51 @@ +gcc -g -pg racineCarree.c +./a.out +gprof ./racineCarree + +# Profilling + +J'ai peut etre un probleme sur ça. +## Flat profile + + % cumulative self self total + time seconds seconds calls Ts/call Ts/call name + 0.00 0.00 0.00 6 0.00 0.00 racinecarre + 0.00 0.00 0.00 2 0.00 0.00 racineCarreeTab + +## Call profile + +index % time self children called name + 0.00 0.00 1/6 main [6] + 0.00 0.00 5/6 racineCarreeTab [2] +[1] 0.0 0.00 0.00 6 racinecarre [1] +----------------------------------------------- + 0.00 0.00 1/2 main [6] + 0.00 0.00 1/2 atexit [3] +[2] 0.0 0.00 0.00 2 racineCarreeTab [2] + 0.00 0.00 5/6 racinecarre [1] + +----------------------------------------------- + + + +# Complexité cyclomatique +## RacineCarree() + - Il y a 4 + - On sort dans le 1er quand n < 0 (doit etre entier positif ) + - Boucle for il y a un if qui verifie la condition qui est vrai i * i = entier positif qui permet la racine 5 * 5 = 25 + - if qui est faux car pas egal à l'entier positif donné + - Sortie boucle for pour le resultat et return -1 si tout les cas sont faux +Complixité cyclonique de 4 + +## racineCarreeTab() + - Fonction recurcise qui retourne lui meme donc 1 +Complixité cyclonique de 1 + +# Complexité algorithmique + +racineCarree() => 0(1) car on choisit la cas en fonction de n entier positif , un choix parmi les if +racineCarreeTab => O(n!) fonction recursive qui appele la racineCarre + + + + diff --git a/Ex2/a.out b/Ex2/a.out new file mode 100755 index 0000000..b42f725 Binary files /dev/null and b/Ex2/a.out differ diff --git a/Ex2/gmon.out b/Ex2/gmon.out new file mode 100644 index 0000000..94dff94 Binary files /dev/null and b/Ex2/gmon.out differ diff --git a/Ex2/racineCarree.c b/Ex2/racineCarree.c new file mode 100644 index 0000000..dbff202 --- /dev/null +++ b/Ex2/racineCarree.c @@ -0,0 +1,57 @@ +#include +#include + + + +int racinecarre(int n){ + /* int x = n/4; /* Precision pour essayer de se rapprocher*/ + + if (n < 0){ + return -1; + } + + for(int i = 0; i <= n; i++ ){ + if (i * i == n) { /* 2 * 2 = 4 */ + return i; + } + if (i * i > n) { + break; + } + /*x = (x + ( n / x)) /2;*/ + } + return -1; + +} + + + +int racineCarreeTab(int tableau[], int taille, int resultat[]) { + for (int i = 0; i < taille; i++) { + resultat[i] = racinecarre(tableau[i]); + } +} + + + + +int main(void) +{ + /* + int n = 4; + int ans = racinecarre(n); + printf("%d\n", ans); + */ + + int tab1[] = {1100000, 1100000, 110000}; + int resultat1[3]; + racineCarreeTab(tab1, 3, resultat1); + printf("racineCarreeTab([9,25,4]) = %ld/n, %ld/n , %ld/n", resultat1[0], resultat1[1], resultat1[2]); + + + + + return 0; +} + + + diff --git a/Ex3/TriSpecial.c b/Ex3/TriSpecial.c new file mode 100644 index 0000000..72d0184 --- /dev/null +++ b/Ex3/TriSpecial.c @@ -0,0 +1,57 @@ +#include +#include + + +int racinecarre(int n){ + /* int x = n/4; /* Precision pour essayer de se rapprocher*/ + + if (n < 0){ + return -1; + } + + for(int i = 0; i <= n; i++ ){ + if (i * i == n) { /* 2 * 2 = 4 */ + return i; + } + if (i * i > n) { + break; + } + /* x = (x + ( n / x)) /2; */ + } + return -1; + +} + + +int TriSpecial(int tab[]){ + int nbr, somme; + int quantite = racinecarre(nbr); + + /* calcul quantité pas finie */ + + somme = 0; + if(quantite % 2 == 0){ + for (int i = 0; i < nbr; i++){ + nbr = i; + somme = somme + tab[i] * nbr + 1; + } + }else { + for (int i = 0; i < nbr; i++){ + racinecarre(i); + int somme = somme + racinecarre(tab[i]) + i + 1; + } + + + } + + +} +/* Pas finie */ +int main(void) +{ + int tab1[4] = {3, 5, 25, 16}; + TriSpecial(tab1); + + printf("Tri %d, %d, %d , %d ", tab1[0], tab1[1], tab1[2], tab1[3]); + printf("\n"); +} \ No newline at end of file diff --git a/Ex3/a.out b/Ex3/a.out new file mode 100755 index 0000000..a88df31 Binary files /dev/null and b/Ex3/a.out differ