Exercices algorithmique et programmation

Cours algorithmique et programmation

Définition du lexique

Exercice 1 La variable lexique désigne un tableau de pointeurs sur des chaînes de caractères constantes *lexique est le contenu de la première case du tableau lexique, i.e. un pointeur sur une chaîne de caractères, de type char*. Une chaine de caractères est un tableau, donc il s’agit en fait de l’adresse de la première case de ce tableau. Autrement dit, cette expression est l’adresse de la première lettre du lexique (ici, la lettre ‘d’).  lexique+1 est l’adresse de la deuxième case du tableau lexique. C’est donc l’adresse d’un pointeur sur la chaine « nuee », et son type est par conséquent char**.  *(lexique+2) représente le contenu de la 3 ème case du tableau lexique, et son type est donc char*. Comme pour *lexique, on obtient l’adresse de la première lettre de la chaîne pointée (i.e. ‘a’, dans notre cas).  *(lexique+1)+1 est l’adresse de la 2ème lettre de la chaîne pointée par le pointeur *(lexique+1). Son type est donc char*, et il s’agit de l’adresse de la lettre ‘u’ dans le mot « nuee ».  *(*(lexique+2)+2) est une valeur littérale de type char et sa valeur est ‘i’ : 3 ème lettre du 3ème mot de lexique.  De la même façon, *(*(lexique+3)+4) est la 5ème lettre du 3ème mot, donc une valeur de type char correspondant au caractère de fin de chaîne ‘\0’.

Exercice 2 

void affiche_lexique()

{ int i;

for(i=0;i<TAILLE_LEXIQUE;i++)

printf(« lexique[%d]=\ »%s\ »\n »,i,lexique[i]);

}

Recherche dans le lexique 

Exercice 3

 int cherche_prefixe(char *prefixe) 

{ int i,resultat=0; printf(« La chaine \ »%s\ » est un prefixe des mots suivants :\n »,prefixe); 

for(i=0;i<TAILLE_LEXIQUE;i++)

{ if(est_prefixe(prefixe,lexique[i]))

{ resultat++;

printf(« %3d.lexique[%d]=\ »%s\ »\n »,resultat,i,lexique[i]);

}

}

return resultat;

}

Exercice 4 

int cherche_premier()

 { int i,comp,resultat=1; 

for(i=1;i0) resultat = i;

 } return resultat; 

}

Exercice 5 

int cherche_premier_partiel(int debut)

 { int i,comp,resultat=debut;

 for(i=debut;i0) resultat = i;

 }

 return resultat;

 } 

Tri du lexique

Exercice 6 

void permute_mots(int i, int j)

{ char *p = lexique[i];

lexique[i] = lexique[j];

lexique[j] = p;

}

Exercice 7 

void trie_lexique()

{ int i,premier;

for(i=0;i<TAILLE_LEXIQUE;i++)

{ premier = cherche_premier_partiel(i);

permute_mots(i,premier);

}

}

Cours gratuitTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *