M1102-TD5 Exercie2 Corrigé

[Algo]
fonction TrouveCarDansStr (Caract : in caractere,
Chaine : in string,
Debut : in entier_naturel) renvoie entier_naturel
debut
declarer i : entier_naturel;
i <- Debut;
tant_que (i < taille(Chaine) ET_ALORS Caract ne_vaut_pas Chaine [i])
faire
i <- i +1;
ffaire
renvoie i;
fin

algorithme ComptagePetitEnsemble
debut
declarer KStrVoy : constante string <- "aeiouy";

declarer TabCpt : tableau_de taille (KStrVoy) entier_naturel;
pour (i variant_de 0 a taille (TabCpt) – 1)
faire
TabCpt [i] <- 0;
ffaire

declarer Chaine : string;
afficher ("Veuillez saisir une chaine de caractères : ");
saisir (Chaine);

//comptage
pour (i variant_de 0 a taille (Chaine) -1)
faire
declarer Pos : entier_naturel;
Pos <- TrouveCarDansStr (Chaine [i], KStrVoy, 0);
si (Pos vaut taille (KStrVoy)) continue;
TabCpt [Pos] <- TabCpt [Pos] + 1;
ffaire

//nb total d’occurence
declarer Somme : entier_naturel;
Somme <- 0;
pour (i variant_de 0 a taille (TabCpt) – 1)
faire
Somme <- Somme + TabCpt [i];
ffaire

//affichage final
pour (i variant_de 0 a taille (KStrVoy) -1)
faire
afficher ("Le caractère ", KStrVoy [i], " apparait ", TabCpt [i], " fois en absolu et ", TabCpt [i]*100 / Somme, "% en relatif");
ligne_suivante;
ffaire
fin
[/Algo]