M1102-TD7 Exercie1 Corrigé

[Algo]
fonction isupper (Car : in caractere) renvoie booleen
debut
renvoie (‘A’ <= Car ET_ALORS Car <= ‘Z’);
fin

fonction islower (Car : in caractere) renvoie booleen
debut
renvoie (‘a’ <= Car ET_ALORS Car <= ‘z’);
fin

fonction isdigit (Car : in caractere) renvoie booleen
debut
renvoie (‘0’ <= Car ET_ALORS Car <= ‘9’);
fin

fonction CarDeMot (Car : in caractere) renvoie booleen
debut
renvoie (islower (Car) OU_SINON isupper(Car) OU_SINON isdigit (Car) OU_SINON Car vaut ‘_’);
fin

//approche mot/mot
//fonction CompterNbMots (Chaine : in string) renvoie entier_naturel
//debut
// declarer Cpt : entier_naturel;
// Cpt <- 0;
// declarer i : entier_naturel;
// i <- 0;
//
// boucle
// //on se positionne sur le début du prochain mot
// tant_que ((i < taille (Chaine)) ET_ALORS (NON CarDeMot (Chaine [i])))
// faire
// i <- i + 1;
// ffaire
// si (i vaut taille (Chaine)) sortie;
//
// //si on ne sort pas, c’est qu’on est sur le debut d’un mot
// Cpt <- Cpt + 1;
//
// //on passe le mot courant
// tant_que (i < taille (Chaine) ET_ALORS CarDeMot (Chaine [i]))
// faire
// i <- i + 1;
// ffaire
// fboucle
//
// renvoie Cpt;
//fin

//approche caractere/caractere
fonction CompterNbMots (Chaine : in string) renvoie entier_naturel
debut
declarer Cpt : entier_naturel;
Cpt <- 0;
declarer EstDansMot : booleen;
EstDansMot <- faux;

pour (i variant_de 0 a taille (Chaine) -1)
faire
//on identifie le debut d’un nouveau mot
si (NON EstDansMot ET_ALORS CarDeMot (Chaine [i]))
Cpt <- Cpt + 1;
EstDansMot <- vrai;
//on identifie la fin du mot courant
sinon_si (EstDansMot ET_ALORS NON CarDeMot (Chaine [i]))
EstDansMot <- faux;
fsi
ffaire
renvoie Cpt;
fin

algorithme ComptageDeMots
debut
declarer LigneLue : string;
boucle
afficher (“Entrer une ligne : “);
saisir (LigneLue);
si (0 vaut taille (LigneLue)) sortie;
afficher (LigneLue);
ligne_suivante;
afficher (“Nombre de mots de la ligne :”, CompterNbMots (LigneLue));
ligne_suivante;
fboucle
fin
[/Algo]