Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f0e5c2a114 | |||
| 19d830336b |
@@ -0,0 +1,26 @@
|
|||||||
|
Dimitri Solar
|
||||||
|
Valentin Loison
|
||||||
|
|
||||||
|
# 1. Mesurer #
|
||||||
|
Empreinte du rapport : 1d53de903efd2b7c
|
||||||
|
|temps : | |
|
||||||
|
| --- | --- |
|
||||||
|
|real | 0m2.603s |
|
||||||
|
| user | 0m2.596s |
|
||||||
|
|sys | 0m0.004s |
|
||||||
|
|
||||||
|
# 3. Analyser
|
||||||
|
Le temps est majoritairement pris par longueur et egales, notament a cause du nombre d'appel.
|
||||||
|
|
||||||
|
|
||||||
|
# 4.Proposer
|
||||||
|
|
||||||
|
|
||||||
|
le script appelle beaucoup trop egales et longueur
|
||||||
|
il prenne plus de 60% du temps
|
||||||
|
|
||||||
|
|
||||||
|
# 5. Solution éventuelle
|
||||||
|
|
||||||
|
passer par une recherche dichotomique et trier la listes des mots vides pour réduire le
|
||||||
|
nombre d'appel a égal pour trier_mots_vides()
|
||||||
+36
-3
@@ -102,7 +102,7 @@ int est_lettre(char c)
|
|||||||
/* Génération du texte */
|
/* Génération du texte */
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
static const char *MOTS_VIDES[] = {
|
static char *MOTS_VIDES[] = {
|
||||||
"le", "la", "les", "un", "une", "des", "du", "de", "et", "ou",
|
"le", "la", "les", "un", "une", "des", "du", "de", "et", "ou",
|
||||||
"mais", "donc", "or", "ni", "car", "que", "qui", "quoi", "dont", "ou",
|
"mais", "donc", "or", "ni", "car", "que", "qui", "quoi", "dont", "ou",
|
||||||
"a", "au", "aux", "en", "dans", "par", "pour", "sur", "sous", "avec",
|
"a", "au", "aux", "en", "dans", "par", "pour", "sur", "sous", "avec",
|
||||||
@@ -226,12 +226,44 @@ typedef struct {
|
|||||||
int occurrences;
|
int occurrences;
|
||||||
} Entree;
|
} Entree;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int doit_bouger(const char *a, const char *b)
|
||||||
|
{
|
||||||
|
return comparer(a, b) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void trier_mots_vides()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < NB_MOTS_VIDES - 1; i++) {
|
||||||
|
for (int j = 0; j < NB_MOTS_VIDES - 1 - i; j++) {
|
||||||
|
if (doit_bouger(&MOTS_VIDES[j], &MOTS_VIDES[j + 1])) {
|
||||||
|
char tmp = *MOTS_VIDES[j];
|
||||||
|
MOTS_VIDES[j] = MOTS_VIDES[j + 1];
|
||||||
|
MOTS_VIDES[j + 1] = &tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int est_mot_vide(const char *mot)
|
int est_mot_vide(const char *mot)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < NB_MOTS_VIDES; i++) {
|
int borne_min = 0;
|
||||||
if (egales(mot, MOTS_VIDES[i]))
|
int borne_max = NB_MOTS_VIDES;
|
||||||
|
while(borne_min < borne_max){
|
||||||
|
int i = (borne_max - borne_min)/2 +borne_min;
|
||||||
|
if (egales(mot,MOTS_VIDES[i]))
|
||||||
return 1;
|
return 1;
|
||||||
|
if (comparer(mot,MOTS_VIDES[i]) > 1)
|
||||||
|
borne_min = i;
|
||||||
|
else
|
||||||
|
borne_max = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -403,6 +435,7 @@ double racine(double x)
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
trier_mots_vides();
|
||||||
char **vocab = generer_vocabulaire();
|
char **vocab = generer_vocabulaire();
|
||||||
char *texte = generer_texte(vocab, NB_MOTS_TEXTE);
|
char *texte = generer_texte(vocab, NB_MOTS_TEXTE);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user