Introduction
Dans ce laboratoire, vous apprendrez à additionner deux matrices en programmation C. Le laboratoire couvre les étapes suivantes : la lecture des dimensions et des éléments des deux matrices, l'addition des éléments correspondants et l'impression de la matrice résultante. Vous commencerez par créer un programme C pour lire les dimensions et les éléments de la matrice, puis implémenterez la logique d'addition de matrices, et enfin afficherez la matrice finale. Ce laboratoire vise à fournir une expérience pratique du travail avec les matrices et l'algèbre linéaire en utilisant le langage C.
Lecture des dimensions et des éléments des deux matrices
Dans cette étape, vous apprendrez à lire les dimensions et les éléments de deux matrices dans un programme C. L'addition de matrices nécessite des matrices de même taille, nous allons donc d'abord implémenter l'entrée pour les dimensions et les éléments des matrices.
Création du programme d'addition de matrices
Tout d'abord, créez un nouveau fichier C pour l'addition de matrices :
cd ~/project
nano matrix_addition.c
Maintenant, écrivons le code pour lire les dimensions et les éléments des matrices :
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE];
// Lecture des dimensions des matrices
printf("Entrez le nombre de lignes (max %d) : ", MAX_SIZE);
scanf("%d", &rows);
printf("Entrez le nombre de colonnes (max %d) : ", MAX_SIZE);
scanf("%d", &cols);
// Entrée des éléments de la première matrice
printf("Entrez les éléments de la première matrice :\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Entrez l'élément [%d][%d] : ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// Entrée des éléments de la deuxième matrice
printf("Entrez les éléments de la deuxième matrice :\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Entrez l'élément [%d][%d] : ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
return 0;
}
Compilation et exécution du programme
Compilez le programme :
gcc matrix_addition.c -o matrix_addition
Sortie d'exemple
Lorsque vous exécutez le programme, il vous demandera d'entrer les dimensions et les éléments des matrices :
Entrez le nombre de lignes (max 10) : 2
Entrez le nombre de colonnes (max 10) : 3
Entrez les éléments de la première matrice :
Entrez l'élément [0][0] : 1
Entrez l'élément [0][1] : 2
Entrez l'élément [0][2] : 3
Entrez l'élément [1][0] : 4
Entrez l'élément [1][1] : 5
Entrez l'élément [1][2] : 6
Entrez les éléments de la deuxième matrice :
Entrez l'élément [0][0] : 7
Entrez l'élément [0][1] : 8
Entrez l'élément [0][2] : 9
Entrez l'élément [1][0] : 10
Entrez l'élément [1][1] : 11
Entrez l'élément [1][2] : 12
Explication du code
#define MAX_SIZE 10définit une limite maximale pour les dimensions des matricesscanf()est utilisé pour lire les entrées entières pour les lignes, les colonnes et les éléments des matrices- Des boucles
forimbriquées sont utilisées pour saisir les éléments des deux matrices - Le programme vérifie que les dimensions des matrices sont comprises dans la taille maximale définie
Addition des éléments correspondants
Dans cette étape, vous apprendrez à additionner les éléments correspondants de deux matrices et à stocker le résultat dans une nouvelle matrice.
Mise à jour du programme d'addition de matrices
Ouvrez le fichier C précédent :
cd ~/project
nano matrix_addition.c
Modifiez le programme pour ajouter les éléments des matrices :
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];
// Le code d'entrée précédent reste le même
// ... (entrée des dimensions et des éléments de matrix1 et matrix2)
// Addition des éléments correspondants
printf("\nMatrice résultante (Matrice1 + Matrice2) :\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
Compilation et exécution du programme
Compilez le programme mis à jour :
gcc matrix_addition.c -o matrix_addition
Exécutez le programme :
./matrix_addition
Sortie d'exemple
Entrez le nombre de lignes (max 10) : 2
Entrez le nombre de colonnes (max 10) : 3
Entrez les éléments de la première matrice :
Entrez l'élément [0][0] : 1
Entrez l'élément [0][1] : 2
Entrez l'élément [0][2] : 3
Entrez l'élément [1][0] : 4
Entrez l'élément [1][1] : 5
Entrez l'élément [1][2] : 6
Entrez les éléments de la deuxième matrice :
Entrez l'élément [0][0] : 7
Entrez l'élément [0][1] : 8
Entrez l'élément [0][2] : 9
Entrez l'élément [1][0] : 10
Entrez l'élément [1][1] : 11
Entrez l'élément [1][2] : 12
Matrice résultante (Matrice1 + Matrice2) :
8 10 12
14 16 18
Explication du code
- Un nouveau tableau 2D
resultest créé pour stocker la somme des éléments des matrices - Des boucles
forimbriquées parcourent chaque élément des deux matrices result[i][j] = matrix1[i][j] + matrix2[i][j]additionne les éléments correspondantsprintf()est utilisé pour afficher la matrice résultante
Affichage de la matrice résultante
Dans cette étape, vous apprendrez à formater et afficher la matrice résultante de manière claire et lisible.
Amélioration de la fonction d'impression de matrice
Ouvrez le fichier C précédent :
cd ~/project
nano matrix_addition.c
Mettez à jour le programme avec une fonction d'impression de matrice dédiée :
#include <stdio.h>
#define MAX_SIZE 10
// Fonction pour afficher une matrice
void printMatrix(int matrix[MAX_SIZE][MAX_SIZE], int rows, int cols, const char* matrixName) {
printf("%s:\n", matrixName);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
printf("\n");
}
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];
// Le code d'entrée précédent reste le même
// ... (entrée des dimensions et des éléments de matrix1 et matrix2)
// Addition des éléments correspondants
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
// Affichage des matrices
printMatrix(matrix1, rows, cols, "Première matrice");
printMatrix(matrix2, rows, cols, "Deuxième matrice");
printMatrix(result, rows, cols, "Matrice résultante (Matrice1 + Matrice2)");
return 0;
}
Compilation et exécution du programme
Compilez le programme mis à jour :
gcc matrix_addition.c -o matrix_addition
Exécutez le programme :
./matrix_addition
Sortie d'exemple
Entrez le nombre de lignes (max 10) : 2
Entrez le nombre de colonnes (max 10) : 3
Entrez les éléments de la première matrice :
Entrez l'élément [0][0] : 1
Entrez l'élément [0][1] : 2
Entrez l'élément [0][2] : 3
Entrez l'élément [1][0] : 4
Entrez l'élément [1][1] : 5
Entrez l'élément [1][2] : 6
Entrez les éléments de la deuxième matrice :
Entrez l'élément [0][0] : 7
Entrez l'élément [0][1] : 8
Entrez l'élément [0][2] : 9
Entrez l'élément [1][0] : 10
Entrez l'élément [1][1] : 11
Entrez l'élément [1][2] : 12
Première matrice :
1 2 3
4 5 6
Deuxième matrice :
7 8 9
10 11 12
Matrice résultante (Matrice1 + Matrice2) :
8 10 12
14 16 18
Explication du code
- La fonction
printMatrix()est créée pour afficher les matrices avec un formatage cohérent. - Le spécificateur de format
%4dassure un affichage aligné des colonnes. - La fonction prend la matrice, les dimensions et un nom en paramètres.
- Les matrices sont affichées avec des en-têtes descriptifs.
- Des boucles imbriquées parcourent les éléments de la matrice pour l'affichage.
Résumé
Dans ce laboratoire, vous avez appris à lire les dimensions et les éléments de deux matrices dans un programme C. Ceci est une étape essentielle pour l'addition de matrices, car elle nécessite des matrices de même taille. Vous avez implémenté l'entrée des dimensions et des éléments des matrices, garantissant que le programme peut gérer des matrices jusqu'à une taille maximale de 10x10.
Après avoir lu les dimensions et les éléments des matrices, l'étape suivante consiste à additionner les éléments correspondants des deux matrices et à stocker la matrice résultante.



