diff --git a/README.md b/README.md index e69de29..ff98cc1 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,39 @@ +# Contrôle Machine - DEV5.1 Qualité algorithmique + +``` +$ gcc Racine.c +$ ./a.out +``` +En théorie il devrait compiler, dommage que c'est que la théorie + +Le main : remplit un table de taille CAPACITE de valeurs aléatoires [0-100] + +## Exo1 +*Note : La fonction racineCarre( ) ne renvoie pas -1 si ce n'est pas une racine entière* + +*Note : racineCarreeTab( ) non plus* + + +## Exo2 + +Profiler : ne compile pas. + +Complexité cyclomatique de racineCarree( ) : 3 (devrait être 4 avec le if racine non entière return -1). + +Complexité cyclomatique de racineCarreeTab( ) : 2 + +Complexité algorithmique de racineCarree( ) : meilleur cas : O(1) (racine de 0 ou 1), dans le pire cas : + +Complexité algorithmique de racineCarreeTab( ) : O(n) boucle n fois (n la taille du tableau) + +## Exo3 +Profiler : ne compile pas. + +Complexité cyclomatique de TriSpecial( ) : 8 + +Complexité cyclomatique de racineCarreeEntiere( ) : 6 \ +*Note : racineCarreeEntiere( ) est une sous fonction de TriSpecial( )* + +Complexité algorithmique de TriSpecial( ) : O(n*2) boucle n fois (n la taille du tableau) 2 fois + +Complexité algorithmique de racineCarreeEntiere( ) : O(n) boucle n fois (n la taille du tableau) \ No newline at end of file diff --git a/Racine.c b/Racine.c new file mode 100644 index 0000000..0ee0b91 --- /dev/null +++ b/Racine.c @@ -0,0 +1,97 @@ +#include +#include +#include + +#define CAPACITE 3 + + +int racineCarree(int nombre){ + double calcul; + double difference; + if (nombre == 0 || nombre == 1){ + return (nombre); + } + calcul = nombre; + do { + difference=calcul; + calcul=0.5 * (calcul + nombre / calcul); + } while (calcul != difference); + // devrait vérifier si c'est entier et return -1 si ce n'est pas le cas + return (calcul); +} + +void racineCarreeTab(tableau){ + int i; + for(i=0;i