M1102-TD5 Exercie3 Corrigé

[Algo]
fonction isspace (C : in caractere) renvoie booleen
debut
renvoie (C vaut ‘ ‘ OU_SINON C vaut ‘\t’ OU_SINON C vaut ‘\n’);
fin

//variante avec une boucle pour
//fonction CompterDoublonsV0 (Chaine : in string) renvoie entier_naturel
//debut
//
// si (taille(Chaine) < 2) renvoie 0;
//
// declarer Compt : entier_naturel;
// Compt <- 0;
//
// pour (i variant_de 1 a taille (Chaine) – 1)
// faire
// si (isspace (Chaine [i])) continue;
// si (Chaine [i] vaut Chaine [i-1])
// Compt <- Compt + 1;
// fsi
// ffaire
//
// renvoie Compt;
//fin

//variante en utilisant une boucle tant_que
fonction CompterDoublonsV0 (Chaine : in string) renvoie entier_naturel
debut

si (taille(Chaine) < 2) renvoie 0;

declarer Compt : entier_naturel;
Compt <- 0;

declarer i : entier_naturel;
i <- 1;

tant_que (i < taille (Chaine))
faire
si (NON isspace (Chaine [i]) ET_ALORS Chaine [i] vaut Chaine [i-1])
Compt <- Compt +1;
fsi
i <- i + 1;
ffaire

renvoie Compt;
fin

algorithme Nb_de_Doublons
debut

boucle
// Saisie

declarer LigneLue : string;
afficher (“Entrer une string (ligne vide pour sortir) : “);
saisir (LigneLue);

si (taille (LigneLue) vaut 0) sortie;

// La ligne traitée est non vide
// Comptage
declarer NbreDoublons : entier_naturel;

NbreDoublons <- CompterDoublonsV0 (LigneLue);

// Affichage
afficher (LigneLue);
ligne_suivante;
afficher (“Nombre de doublons : “, NbreDoublons);
ligne_suivante;
fboucle

fin
[/Algo]