Vous êtes sur la page 1sur 5

Corrigé Serie 6 : chaine et Structure

Exercice 1

Dans le but de vérifier si deux chaînes saisies sont anagrammes (formées des mêmes
lettres, exemple : ch1 : chINe ch2 : niche, sans tenir compte de la différence entre majuscules
et minuscules), nous allons utiliser les sous-algorithmes suivants :
1. Une procédure Majuscule, qui permet de convertir une chaîne de caractères passée en
paramètre en majuscule ;
PROCEDURE Majuscule(E/S ch : chaine)
VAR
i : entier
Debut
POUR i de 1 à long(ch) FAIRE
ch[i]  Majus(ch[i])
FIN POUR
FIN Majuscule

Fonction Anagramme(ch1 : chaine, ch2 : chaine) :Logique


VAR

Debut
Majuscule(ch1)
Majuscule(ch2)
Trier(ch1)
Trier(ch2)
Anagramme  (ch1=ch2)
Fin Anagramme

Algorithme VerifAnagramme
VAR
Ch1,ch2 : chaine
DEBUT
Repeter
Ecrire("Donnez une chaine : ")
Lire(ch1)
Jusqu’à(LONG(ch1)>0) // ch1 <> ""
Repeter
Ecrire("Donnez une chaine : ")
Lire(ch2)
Jusqu’à(LONG(ch2)>0) // ch2 <> ""

Si(Anagramme(ch1,ch2))Alors
Ecrire(ch1," et ",ch2," sont anagramme ")
Sinon
Ecrire(ch1," et ",ch2," ne sont pas anagramme ")
Fin si
FIN
Exercice 2

1
1) Fonction OccurenceChaine(ch :chaine, C :car) : entier
Var j,Nb : entier
Début
Nb  0
Pour j de 1 à LONG(ch) faire
Si(ch[j]= C)Alors
Nb  Nb+1
Fin Si
Fin pour
OccurenceChaine  Nb
Fin OccurenceChaine
2)
Fonction SaisirChaine() : chaine
VAR ch : chaine
DEBUT
Repeter
Ecrire("Donnez une chaine : ")
Lire(ch)
Jusqu’à(long(ch)>0 et long(ch)<=255) // ch <> ""
SaisirChaine  ch
Fin SaisirChaine

Procedure SaisirTabChaine(S T : TabChaine ;E N : entier)


VAR
i : entier
Debut
Pour i de 1 à N Faire
T[i]  SaisirChaine()
Fin Pour
FIN SaisirTabChaine
3)
Procedure AfficherTabChaine(E T : TabChaine, N :entier)
VAR
i : entier
Debut
Ecrire("Les chaines sont : ")
Pour i de 1 à N Faire
Ecrire(T[i]," ")
Fin Pour
FIN AfficherTabChaine

4)
Fonction Occ_Tab (T :TabChaine, C :car,N :entier) : entier
Var j,Nb : entier
Début
Nb  0
Pour j de 1 à N faire
Nb  Nb+OccurenceChaine(T[j],C)
Fin pour
Occ_Tab  Nb
Fin Occ_Tab
2
5)
Fonction SaisirEntier() : Entier
VAR
N : entier
Debut
Repeter
Ecrire("Donnez Nb de chaines : ")
Lire(N)
Jusqu’à(N>0 et N<=Nmax)
Fin SaisirEntier

Algorithme TraitTableauChaine
CONST Nmax=100
TYPE
TabChaine=tableau[1..Nmax]de chaine
VAR
T1,T2 : Tabchaine ,C :car, N,M : Entier
DEBUT
N  SaisirEntier()
SaisirTabChaine(T1,N)//Remplissage tableau de chaine1
M  SaisirEntier()
SaisirTabChaine(T2,M)//Remplissage tableau de chaine2
Ecrire("donnez un caractère")
Lire(C)
SI(OCC_TAB(T1,C,N)> OCC_TAB(T2,C,M))Alors
Ecrire("Les élément du tableau T1")
AfficherTabChaine(T1,N)
Sinon SI(OCC_TAB(T1,C,N)< OCC_TAB(T2,C,M))Alors
Ecrire("Les élément du tableau T2")
AfficherTabChaine(T2,M)
Sinon
Ecrire("Les élément du tableau T1")
AfficherTabChaine(T1,N)
Ecrire("Les élément du tableau T2")
AfficherTabChaine(T2,M)
Fin Si
Fin

Exercice 3
1)
Fonction SaisirChaine() : chaine
VAR ch : chaine
DEBUT
Repeter
Ecrire("Donnez une chaine : ")
Lire(ch)
Jusqu’à(long(ch)>0 et long(ch)<Nmax) // ch <> ""
SaisirChaine  ch
Fin SaisirChaine

3
Procedure SaisirTabChaineCarree(S M : MatChaine ;E N : entier)
VAR
i,j : entier
Debut
Pour i de 1 à N Faire
Pour j de 1 à N Faire
M[i,j]  SaisirChaine()
Fin Pour
Fin Pour
FIN SaisirTabChaineCarree
2)
Fonction Maj(ch :chaine) : Logique
Var j : entier, Verif : Logique
Début
j 1, Verif Vrai
TANT QUE(j<= LONG(ch) et Verif=Vrai)FAIRE
Si(ch[j] <> Majus(ch[j]))Alors
// Si(ch[j]<='z' et ch[j]>='a') Alors
Verif  Faux
Fin Si
j  j+1
Fin TQ
Maj  Verif
Fin Maj
3)
FONCTION MAJ_MAT (M : MatChaine, N : entier) :entier
VAR
i,j,Nb :entier
DEBUT
Nb0
Pour i de 1 à N Faire
Pour j de 1 à N Faire
SI(Maj(M[i,j])=Vrai) ALORS
NbNb+1
FIN SI
Fin Pour
Fin Pour
MAJ_MAT  Nb
FIN MAJ_MAT

4)
Algorithme TraitMatriceChaine
CONST Nmax=50
TYPE
MatChaine =tableau[1..Nmax,1..Nmax]de chaine
VAR
M : MatChaine, Nb,N :entier
DEBUT
N  Taille() //N taille de la matrice carré

4
SaisirMatChaineCarree(M,N)//Remplissage matrice de chaine
Ecrire(" Le nombre de chaine en majuscule est:",MAJ_MAT(M,N))

Fin

Vous aimerez peut-être aussi