Rendu
This commit is contained in:
BIN
Exercice1/a.out
Executable file
BIN
Exercice1/a.out
Executable file
Binary file not shown.
BIN
Exercice1/gmon.out
Normal file
BIN
Exercice1/gmon.out
Normal file
Binary file not shown.
116
Exercice1/racinecarree.c
Normal file
116
Exercice1/racinecarree.c
Normal file
File diff suppressed because one or more lines are too long
BIN
Exercice3/a.out
Executable file
BIN
Exercice3/a.out
Executable file
Binary file not shown.
151
Exercice3/trispecial.c
Normal file
151
Exercice3/trispecial.c
Normal file
@@ -0,0 +1,151 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
int racineCarree(int nombre){
|
||||
|
||||
if (nombre < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ( nombre == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int i;
|
||||
|
||||
for (i = 0; i <= nombre; i++) {
|
||||
if( i * i == nombre){
|
||||
return i;
|
||||
}
|
||||
if ( i * i > nombre ) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
int racinenonentierre(int *tab, int taille) {
|
||||
|
||||
int compte;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < taille; i++) {
|
||||
if (racineCarree(tab[i]) == -1) {
|
||||
compte++;
|
||||
}
|
||||
}
|
||||
|
||||
return compte;
|
||||
|
||||
}
|
||||
|
||||
int sommetableau(int *tab, int taille) {
|
||||
|
||||
int somme = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < taille; i++){
|
||||
somme += tab[i];
|
||||
}
|
||||
|
||||
return somme;
|
||||
|
||||
}
|
||||
|
||||
int sommeracinecarree( int *tab, int taille) {
|
||||
|
||||
int somme = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < taille; i++){
|
||||
|
||||
int racine = racineCarree(tab[i]);
|
||||
|
||||
if (racine != -1) {
|
||||
somme += racine;
|
||||
}
|
||||
}
|
||||
|
||||
return somme;
|
||||
}
|
||||
|
||||
|
||||
void TriSpecial(int *tab, int *resultat, int taille) {
|
||||
|
||||
int nbRacinesNonEntieres = racinenonentierre(tab, taille);
|
||||
|
||||
int estPair = (nbRacinesNonEntieres % 2 == 0);
|
||||
|
||||
if (estPair) {
|
||||
|
||||
int somme = sommetableau(tab, taille);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < taille; i++) {
|
||||
|
||||
if (i % 2 == 0) {
|
||||
resultat[i] = tab[i];
|
||||
} else {
|
||||
resultat[i] = somme * tab[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
int sommeRacines = sommeracinecarree(tab, taille);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < taille; i++) {
|
||||
|
||||
if (i % 2 == 0) {
|
||||
resultat[i] = racineCarree(tab[i]);
|
||||
|
||||
} else {
|
||||
resultat[i] = sommeRacines * tab[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void afficherTableau(int *tab, int taille) {
|
||||
printf("[");
|
||||
int i;
|
||||
|
||||
for (i = 0; i < taille; i++) {
|
||||
printf("%d", tab[i]);
|
||||
|
||||
if (i < taille - 1) {
|
||||
printf(", ");
|
||||
}
|
||||
}
|
||||
printf("]\n");
|
||||
}
|
||||
|
||||
int main() {
|
||||
|
||||
|
||||
int tab1[] = {3, 5, 25, 16};
|
||||
int taille1 = 4;
|
||||
int resultat1[4];
|
||||
|
||||
printf("Entrée : ");
|
||||
afficherTableau(tab1, taille1);
|
||||
printf("\n");
|
||||
|
||||
int nbNonEntieres1 = racinenonentierre(tab1, taille1);
|
||||
|
||||
if (nbNonEntieres1 % 2 == 0) {
|
||||
printf("Somme du tableau : %d\n", sommetableau(tab1, taille1));
|
||||
} else {
|
||||
printf("Somme des racines : %d\n", sommeracinecarree(tab1, taille1));
|
||||
}
|
||||
|
||||
TriSpecial(tab1, resultat1, taille1);
|
||||
|
||||
printf("Résultat : ");
|
||||
afficherTableau(resultat1, taille1);
|
||||
printf("\n");
|
||||
}
|
15
README.md
15
README.md
@@ -0,0 +1,15 @@
|
||||
|
||||
** Commandes pour exécuter les fichiers **
|
||||
|
||||
Exercice 1 :
|
||||
- Pour cet exercice j'ai utilisé les commandes :
|
||||
- gcc racinecaree.c / gcc -ansi -pedantic racinecaree.c / gcc -pg racinecaree.c
|
||||
- ./a.out / gprof ./a.out
|
||||
|
||||
|
||||
Exercice 3 :
|
||||
- Pour cet exercice j'ai utilisé les commandes :
|
||||
- gcc trispecial.c / gcc -ansi -pedantic trispecial.c / gcc -pg trispecial.c
|
||||
- ./a.out
|
||||
|
||||
|
||||
|
58
reponses.txt
Normal file
58
reponses.txt
Normal file
@@ -0,0 +1,58 @@
|
||||
AISSI JUDE-CHRIST BUT3
|
||||
|
||||
EXERCICE 2
|
||||
|
||||
PROFILING
|
||||
|
||||
Après l'exécution des commandes :
|
||||
- gcc -g -pg racinecarree.c
|
||||
- gprof ./a.out
|
||||
|
||||
|
||||
Nous avons comme résultat :
|
||||
|
||||
Flat profile:
|
||||
Each sample counts as 0.01 seconds.
|
||||
% cumulative self self total
|
||||
time seconds seconds calls ms/call ms/call name
|
||||
100.23 0.03 0.03 10000 0.00 0.00 racineCarree
|
||||
0.00 0.03 0.00 2 0.00 0.00 afficherTableau
|
||||
0.00 0.03 0.00 1 0.00 30.07 racineCarreeTab
|
||||
|
||||
|
||||
granularity: each sample hit covers 2 byte(s) for 33.26% of 0.03 seconds
|
||||
|
||||
index % time self children called name
|
||||
0.03 0.00 10000/10000 racineCarreeTab [2]
|
||||
[1] 100.0 0.03 0.00 10000 racineCarree [1]
|
||||
-----------------------------------------------
|
||||
0.00 0.03 1/1 main [3]
|
||||
[2] 100.0 0.00 0.03 1 racineCarreeTab [2]
|
||||
0.03 0.00 10000/10000 racineCarree [1]
|
||||
-----------------------------------------------
|
||||
<spontaneous>
|
||||
[3] 100.0 0.00 0.03 main [3]
|
||||
0.00 0.03 1/1 racineCarreeTab [2]
|
||||
0.00 0.00 2/2 afficherTableau [4]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 2/2 main [3]
|
||||
[4] 0.0 0.00 0.00 2 afficherTableau [4]
|
||||
-----------------------------------------------
|
||||
|
||||
|
||||
COMPLEXITÉS
|
||||
|
||||
Complexité Cyclomatique :
|
||||
racineCarree() = 6
|
||||
racineCarreeTab() = 2
|
||||
|
||||
Complexité Algorithmique:
|
||||
racineCarree() = O(n)
|
||||
racineCarreeTab() = O(t × m)
|
||||
|
||||
|
||||
Exercice 4
|
||||
|
||||
Complexité cyclomatique :
|
||||
|
||||
trispecial() = 6
|
Reference in New Issue
Block a user