M1102-TD4 Exercice1

Ecrire la fonction TrouveCarDansStr () de profil :

fonction TrouveCarDansStr (Caract : in caractere, 
                           Chaine : in string, 
                           Debut  : in entier_naturel) renvoie entier_naturel;

Cette fonction renvoie l’indice de la première occurrence de Caract dans Chaine, à partir de l’indice Debut. Si Caract n’a pas été trouvé, la fonction renvoie la taille de Chaine.

M1102-TD4 Exercie1 Corrigé

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 TestDeTrouveCarDansStr
debut
declarer Str : string;
Str <- "Salut ca va?";

afficher (TrouveCarDansStr ('a', Str, 0));
ligne_suivante;
afficher (TrouveCarDansStr ('a', Str, 3));
ligne_suivante;
afficher (TrouveCarDansStr ('a', Str, 6));
ligne_suivante;
afficher (TrouveCarDansStr ('b', Str, 6));
ligne_suivante;
fin
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 TestDeTrouveCarDansStr
debut
declarer Str : string;
Str <- "Salut ca va?";

afficher (TrouveCarDansStr ('a', Str, 0));
ligne_suivante;
afficher (TrouveCarDansStr ('a', Str, 3));
ligne_suivante;
afficher (TrouveCarDansStr ('a', Str, 6));
ligne_suivante;
afficher (TrouveCarDansStr ('b', Str, 6));
ligne_suivante;
fin

M1102-TD4 Exercice2

Le but de cet exercice est d’afficher le nombre d’occurrences d’un caractère dans une chaîne de caractères. Pour cela :

  • écrire la fonction ComptCaract() qui compte le nombre d’occurrences d’un caractère passé en paramètre, dans une chaîne de caractères passées également en paramètre ; pour cela, parcourir la chaîne caractère par caractère et incrémenter le nombre d’occurrence quand il le faut ;
  • écrire l’algorithme qui teste cette fonction.

M1102-TD4 Exercie2 Corrigé

fonction ComptCarac (Caract : in caractere,
Chaine : in string) 	renvoie entier_naturel
debut
declarer Cpt : entier_naturel;
Cpt <- 0;

pour (i variant_de 0 a taille (Chaine) -1)
faire
si (Caract vaut Chaine [i])
Cpt <- Cpt + 1;
fsi
ffaire

renvoie Cpt;
fin

algorithme TestComptCarac
debut
declarer Str : string;
Str <- "Salut ca va?";

afficher ("on trouve ", ComptCarac ('a', Str), " fois la lettre 'a' dans ", Str);
ligne_suivante;
afficher ("on trouve ", ComptCarac ('b', Str), " fois la lettre 'b' dans ", Str);
ligne_suivante;
fin

M1102-TD4 Exercice3

Le but de cet exercice est d’afficher le nombre d’occurrences d’un caractère dans une chaîne de caractères. Pour cela :

  • écrire la fonction ComptCaract() qui compte le nombre d’occurrences d’un caractère passé en paramètre, dans une chaîne de caractères passées également en paramètre ; pour cela, utiliser la fonction TrouveCarDansStr ();
  • utiliser l’algorithme précédent qui teste cette fonction.

M1102-TD4 Exercie3 Corrigé

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

fonction ComptCarac (Caract : in caractere,
Chaine : in string) 	renvoie entier_naturel
debut
declarer Cpt : entier_naturel;
Cpt <- 0;

declarer Pos : entier_naturel;
Pos <- 0;

boucle
Pos <- TrouveCarDansStr (Caract, Chaine, Pos);
si (Pos vaut taille (Chaine)) sortie;
Cpt <- Cpt + 1;
Pos <- Pos + 1;
fboucle

renvoie Cpt;
fin

algorithme TestComptCarac
debut
declarer Str : string;
Str <- "Salut ca va?";

afficher ("debut");
afficher ("on trouve ", ComptCarac ('a', Str), " fois la lettre 'a' dans ", Str);
ligne_suivante;
afficher ("on trouve ", ComptCarac ('b', Str), " fois la lettre 'b' dans ", Str);
ligne_suivante;
fin

M1102-TD4 Exercice4

Le but de cet exercice est d’afficher le nombre d’occurrences de chaque élément d’un petit ensemble de valeurs dans une collection. Ici, on comptera le nombre de voyelles contenues dans une chaîne de caractères. Pour cela :

  • initialiser les compteurs;
  • pour chaque valeur de l’ensemble (chaque voyelle), balayer complètement la collection (la chaîne de caractères) et compter le nombre d’occurrences de cette valeur (le nombre de voyelles);
  • calculer le nombre total d’occurrence des éléments de l’ensemble (le nombre total de voyelles);
  • afficher le nombre d’occurrences de chacun des éléments de l’ensemble (de chacune des voyelles) ainsi que leur fréquence relative (au nombre total d’éléments de l’ensemble (de voyelles));

Remarques :

  • on pourra utiliser les fonctions ComptCaract()et/ou TrouveCarDansStr ();
  • on rangera l’ensemble des voyelles dans une chaîne de caractères constante.

M1102-TD4 Exercie4 Corrigé

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

fonction ComptCarac (Caract : in caractere,
Chaine : in string) 	renvoie entier_naturel
debut
declarer Cpt : entier_naturel;
Cpt <- 0;

declarer Pos : entier_naturel;
Pos <- 0;

boucle
Pos <- TrouveCarDansStr (Caract, Chaine, Pos);
si (Pos vaut taille (Chaine)) sortie;
Cpt <- Cpt + 1;
Pos <- Pos + 1;
fboucle

renvoie Cpt;
fin

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

declarer TabCpt : tableau_de taille (KStrVoy) entier_naturel;

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

//comptage
pour (i variant_de 0 a taille (KStrVoy) -1)
faire
TabCpt [i] <- ComptCarac (KStrVoy [i], Chaine);
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