Écrire un programme qui lit les coefficients de deux matrices carrées A et B d'ordre N=10 et affiche le nombre de coefficients égaux.
Solution complète :
# Programme pour comparer deux matrices carrées d'ordre 10
# Définir la taille des matrices
N = 10
# Initialiser les matrices avec des listes de listes
# Méthode 1 : Matrices pré-définies (pour test)
A = [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
# ... (compléter avec 8 autres lignes)
]
B = [
[1, 0, 3, 0, 5, 0, 7, 0, 9, 0],
[0, 12, 0, 14, 0, 16, 0, 18, 0, 20],
# ... (compléter avec 8 autres lignes)
]
# Méthode 2 : Lecture des matrices depuis l'entrée utilisateur
print("Entrez les coefficients de la matrice A (10x10) :")
A = []
for i in range(N):
ligne = list(map(int, input(f"Ligne {i+1} (10 nombres séparés par des espaces) : ").split()))
A.append(ligne)
print("\nEntrez les coefficients de la matrice B (10x10) :")
B = []
for i in range(N):
ligne = list(map(int, input(f"Ligne {i+1} (10 nombres séparés par des espaces) : ").split()))
B.append(ligne)
# Compter les coefficients égaux
compteur = 0
# Parcourir chaque élément des matrices
for i in range(N): # Pour chaque ligne
for j in range(N): # Pour chaque colonne
if A[i][j] == B[i][j]:
compteur += 1
# Afficher le résultat
print(f"\nNombre de coefficients égaux entre A et B : {compteur}")
print(f"Pourcentage de similarité : {(compteur/(N*N))*100:.2f}%")
# Version alternative avec liste en compréhension
compteur_v2 = sum(1 for i in range(N) for j in range(N) if A[i][j] == B[i][j])
print(f"\nVérification (méthode alternative) : {compteur_v2}")
Explication détaillée :
- Matrice en Python : Représentée comme une liste de listes
- map(int, ...) : Convertit chaque élément de la liste en entier
- split() : Divise la chaîne d'entrée en liste de sous-chaînes
- Boucles imbriquées : i pour les lignes, j pour les colonnes
- Comparaison A[i][j] == B[i][j] : Vérifie l'égalité élément par élément
- Liste en compréhension : Méthode Pythonique pour compter