Control
This commit is contained in:
39
README.md
39
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)
|
97
Racine.c
Normal file
97
Racine.c
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#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<CAPACITE;i++){
|
||||||
|
tableau[i] = racineCarree(tableau[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int racineCarreeEntiere(tableau){
|
||||||
|
int i, racineNonEntiere = 0
|
||||||
|
for(i=0;i<CAPACITE;i++){
|
||||||
|
if (tableau[i] == -1){
|
||||||
|
racineNonEntiere ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((racineNonEntiere /2) != 0){
|
||||||
|
return(1);
|
||||||
|
}else{
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void TriSpecial(tableau){
|
||||||
|
int i, racineNonEntiere = 0, sommeTableau = 0;
|
||||||
|
|
||||||
|
racineNonEntiere = racineCarreeEntiere(); //sous fonction pour chercher la quantite de racine carre non entiere
|
||||||
|
|
||||||
|
if (racineNonEntiere == 0){
|
||||||
|
for(i=0;i<CAPACITE;i++){
|
||||||
|
sommeTableau = sommeTableau + tableau[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i=0;i<CAPACITE;i++){
|
||||||
|
if ((i/2) != 0){
|
||||||
|
tableauTrie[i] = sommeTableau * tableau[i];
|
||||||
|
}else{
|
||||||
|
tableauTrie[i] = tableau[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
for(i=0;i<CAPACITE;i++){
|
||||||
|
sommeTableau = sommeTableau + racineCarree(tableau[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i=0;i<CAPACITE;i++){
|
||||||
|
if ((i/2) != 0){
|
||||||
|
tableauTrie[i] = sommeTableau * tableau[i];
|
||||||
|
}else{
|
||||||
|
tableauTrie[i] = racineCarree(tableau[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
int tableau[CAPACITE];
|
||||||
|
int i;
|
||||||
|
srand(time(NULL));
|
||||||
|
|
||||||
|
for(i=0;i<CAPACITE;i++){
|
||||||
|
tableau[i]=(rand()%101);
|
||||||
|
}
|
||||||
|
for(i=0;i<CAPACITE;i++){
|
||||||
|
printf("%d ", tableau[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
racineCarreeTab(tableau);
|
||||||
|
|
||||||
|
for(i=0;i<CAPACITE;i++){
|
||||||
|
printf("%d ", tableau[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
Reference in New Issue
Block a user