Matrice Palindrome 3SI 3SC

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 5

Niveau 

: 3ème année Sciences Informatiques (Algorithmiques) Année Scolaire  : 2020/2021

Application 3 : Matrices Palindrome


Compétences visées  :
 Structure de données : chaine et tableau à deux dimensions
 Structures simples, conditionnelle et itératives
 Sous programmes
Soit M une matrice carrée d'ordre N (avec 2 ≤ N ≤ 15) à remplir par des lettres majuscules. On se
propose de chercher les lignes et les colonnes symétriques se trouvant dans la matrice M ainsi que leurs
nombres. Le résultat sera affiché de la façon suivante :
 La première ligne contient les contenus des lignes symétriques de la matrice M, séparés par le
caractère "*".
 La deuxième ligne contient le nombre de lignes symétriques contenues dans la matrice M.
 La troisième ligne contient les contenus des colonnes symétriques de la matrice M, séparés par
le caractère "*".
 La quatrième ligne contient le nombre de colonnes symétriques contenues dans la matrice M.
NB : Une ligne ou une colonne d'une matrice est dite symétrique si la concaténation des
caractères contenus dans ses cases forme une chaîne palindrome.
Exemple :

Pour N = 5 et la matrice M suivante :

G B E B G - La ligne "MALAM" comme indiquée ci-contre est un

N A R O U exemple de lignes symétriques de la matrice M.


- La colonne "BAIAB" comme indiquée ci-contre est un
E I M L C
exemple de colonnes symétriques de la matrice M.
M A L A M

O B E W G

Le résultat affiché sera le suivant :

GBEBG*MALAM
2
BAIAB
1
Travail à faire :
1) Ecrire un algorithme pour le programme principal
2) Déduire les algorithmes des différents modules envisagés précédemment

Lycée Secondaire Souassi Professeur  : Abdelkader BARRAJ


Niveau  : 3ème année Sciences Informatiques (Algorithmiques) Année Scolaire  : 2020/2021
Algorithme matrice_palindrome
Début
Saisir(n)
Remplir_mat (m, n)
Affiche_mat (m, n) Tableau de déclaration des nouveau types
Ecrire (‘’les chaines symétriques sont : ‘’)
Affiche_palind (m, n) Mat = tableau de 15*15 caractères
Fin
Tableau de déclaration des objets
Procédure Saisir (@n : entier)
Début Objet Type/Nature
Répéter m Mat
Ecrire (‘’ n = ‘’) n Entier
Lire (n)
Jusqu’à n € [2,15]
Fin
Procédure remplir_mat(@m : mat , n : entier)
Procédure affiche_mat(m : mat , n :entier)
Début
Début
Pour i de 0 à n-1 faire
Pour i de 0 à n-1 faire
Pour j de 0 à n-1 faire
Pour j de 0 à n-1 faire
Répéter
Ecrire (m[i,j],’’|’’)
Ecrire (‘’M[‘’,i,’’,’’,j,’’]=’’)
Fin Pour
Lire (m[i,j])
Ecrire()
Jusqu’à (ord(m[i,j]) € [65,90])
Fin pour
Fin Pour
Fin
Fin Pour
Fin
Procédure affiche_palind(m : mat , n :entier)
Début
Phrase_ligne  ‘’ ’’
Phrase_col  ‘’ ‘’
Nb_l  0
Nb_col  0
Pour i de 0 à n-1 faire
mot_col  ‘’ ‘’
mot_ligne  ‘’ ‘’
Pour j de 0 à n-1 faire
mot_ligne  mot_ligne + m[i,j]
mot_col  mot_col + m[j,i]
Fin Pour
Si palind(mot_ligne) alors
Phrase_ligne  phrase_ligne + mot_ligne + ‘’*’’
nb_l  nb_l + 1
Fin Si
Si palind(mot_col) alors
Phrase_col  phrase_col + mot_col + ‘’ * ‘’
nb_col  nb_col + 1
Fin Si
Fin pour
Ecrire (sous_chaine(phrase_ligne,0,long(phrase_ligne)-1))
Ecrire (nb_l)
Ecrire (sous_chaine(phrase_col,0,long(phrase_col)-1))
Ecrire(nb_col)
Fin
Lycée Secondaire Souassi Professeur  : Abdelkader BARRAJ
Niveau  : 3ème année Sciences Informatiques (Algorithmiques) Année Scolaire  : 2020/2021

Fonction palind(ch :chaine) : booléene


Début
test  vrai
i0
tantque (test = vrai ) et (i <= long(ch) div 2 ) faire
si ( ch[i] ≠ ch[long(ch) – i – 1]) alors
test  faux
sinon
i  i+1
fin si
fin tantque
Retourner test
Fin

Lycée Secondaire Souassi Professeur  : Abdelkader BARRAJ


Niveau  : 3ème année Sciences Informatiques (Algorithmiques) Année Scolaire  : 2020/2021

**************************** Implémentation en PYTHON ************************************


import numpy as np
m=np.empty((15,15),dtype='U1')
def saisir():
while True:
n=int(input('n = '))
if n in range (2,16):
break;
return n
def remplir_mat(m,n):
for i in range(n):
for j in range(n):
while True:
m[i,j]=input('M['+str(i)+','+str(j)+' ] = ').upper()
if ord(m[i,j]) in range(65,91):
break;
def palind(ch):
test=True;
i=0;
while (test) and (i<= len(ch)//2):
if (ch[i]!=ch[len(ch)-i-1]):
test=False
else:
i=i+1
return test
def affiche_mat(m,n):
for i in range(n):
for j in range(n):
print(m[i,j],end='|')
print()
def affiche_palind(m,n):
phrase_ligne=''
phrase_col=''
nb_l=0
nb_col=0
for i in range(n):
mot_col=''
mot_ligne=''
for j in range(n):
mot_ligne+=m[i,j]
mot_col+=m[j,i]
if palind(mot_ligne):
phrase_ligne+=mot_ligne+'*'
nb_l+=1
if palind(mot_col):
phrase_col+=mot_col+'*'
nb_col+=1
print(phrase_ligne[0:len(phrase_ligne)-1])
print(nb_l)
print(phrase_col[0:len(phrase_col)-1])
print(nb_col)
n=saisir()
Lycée Secondaire Souassi Professeur  : Abdelkader BARRAJ
Niveau  : 3ème année Sciences Informatiques (Algorithmiques) Année Scolaire  : 2020/2021
remplir_mat(m,n)
print('--------------------------')
affiche_mat(m,n)
print(' ------ les mots palindromes sont : ------')
affiche_palind(m,n)

Lycée Secondaire Souassi Professeur  : Abdelkader BARRAJ

Vous aimerez peut-être aussi