Introduction
Dans ce laboratoire, vous apprendrez à soustraire deux matrices dans un programme C. Le laboratoire couvre les étapes suivantes :
Tout d'abord, vous apprendrez à lire les dimensions et les éléments de deux matrices à partir de l'entrée utilisateur. Vous créerez un programme C qui invite l'utilisateur à saisir le nombre de lignes et de colonnes, puis les éléments des deux matrices.
Ensuite, vous implémenterez l'opération de soustraction de matrices, où vous soustrayerez les éléments correspondants des deux matrices et stockerez le résultat dans une nouvelle matrice. Enfin, vous apprendrez à afficher la matrice résultante.
Lecture des dimensions et des éléments
Dans cette étape, vous apprendrez à lire les dimensions et les éléments d'une matrice à partir de l'entrée utilisateur dans un programme C pour la soustraction de matrices. Nous allons créer un programme qui permet aux utilisateurs d'entrer la taille et les valeurs de deux matrices.
Tout d'abord, créons un nouveau fichier C pour notre programme de soustraction de matrices :
cd ~/project
nano matrix_subtraction.c
Maintenant, ajoutez le code suivant au fichier :
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
// Lecture des dimensions de la matrice
printf("Entrez le nombre de lignes : ");
scanf("%d", &rows);
printf("Entrez le nombre de colonnes : ");
scanf("%d", &cols);
// Saisie 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]);
}
}
// Saisie 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;
}
Exemple de sortie :
Entrez le nombre de lignes : 2
Entrez le nombre de colonnes : 2
Entrez les éléments de la première matrice :
Entrez l'élément [0][0] : 5
Entrez l'élément [0][1] : 6
Entrez l'élément [1][0] : 7
Entrez l'élément [1][1] : 8
Entrez les éléments de la deuxième matrice :
Entrez l'élément [0][0] : 1
Entrez l'élément [0][1] : 2
Entrez l'élément [1][0] : 3
Entrez l'élément [1][1] : 4
Compilons et exécutons le programme :
gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction
Explication du code :
- Nous définissons une taille maximale de matrice de 100x100 à l'aide de
MAX_SIZE rowsetcolsstockent les dimensions des matrices- Deux tableaux 2D
matrix1etmatrix2sont créés pour stocker les éléments des matrices scanf()est utilisé pour lire les dimensions et les éléments des matrices à partir de l'entrée utilisateur- Des boucles imbriquées sont utilisées pour saisir les éléments des deux matrices
Soustraction des éléments correspondants
Dans cette étape, vous apprendrez à soustraire les éléments correspondants de deux matrices et à stocker le résultat dans une nouvelle matrice. Nous allons étendre le programme précédent pour effectuer la soustraction de matrices.
Ouvrez le fichier existant et modifiez le code :
cd ~/project
nano matrix_subtraction.c
Mettez à jour le code avec la logique de soustraction de matrices :
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
int result[MAX_SIZE][MAX_SIZE];
// Lecture des dimensions de la matrice
printf("Entrez le nombre de lignes : ");
scanf("%d", &rows);
printf("Entrez le nombre de colonnes : ");
scanf("%d", &cols);
// Saisie 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]);
}
}
// Saisie 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]);
}
}
// Soustraction 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];
}
}
return 0;
}
Exemple de sortie :
Entrez le nombre de lignes : 2
Entrez le nombre de colonnes : 2
Entrez les éléments de la première matrice :
Entrez l'élément [0][0] : 5
Entrez l'élément [0][1] : 6
Entrez l'élément [1][0] : 7
Entrez l'élément [1][1] : 8
Entrez les éléments de la deuxième matrice :
Entrez l'élément [0][0] : 1
Entrez l'élément [0][1] : 2
Entrez l'élément [1][0] : 3
Entrez l'élément [1][1] : 4
Explication du code :
- Un nouveau tableau 2D
resultest créé pour stocker les résultats de la soustraction - Des boucles imbriquées itèrent sur chaque élément de la matrice
result[i][j]est calculé en soustrayant les éléments correspondants dematrix1etmatrix2- La soustraction suit les règles de soustraction de matrices élément par élément
Compilons le programme :
gcc matrix_subtraction.c -o matrix_subtraction
Affichage de la matrice résultante
Dans cette étape, vous apprendrez à afficher la matrice résultante après la soustraction. Nous allons modifier le programme précédent pour afficher les résultats de la soustraction.
Ouvrez le fichier existant et mettez à jour le code :
cd ~/project
nano matrix_subtraction.c
Mettez à jour le code avec la logique d'affichage de la matrice :
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
int result[MAX_SIZE][MAX_SIZE];
// Lecture des dimensions de la matrice
printf("Entrez le nombre de lignes : ");
scanf("%d", &rows);
printf("Entrez le nombre de colonnes : ");
scanf("%d", &cols);
// Saisie 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]);
}
}
// Saisie 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]);
}
}
// Soustraction 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 de la matrice résultante
printf("\nMatrice résultante après soustraction :\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
Compilation et exécution du programme :
gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction
Exemple de sortie :
Entrez le nombre de lignes : 2
Entrez le nombre de colonnes : 2
Entrez les éléments de la première matrice :
Entrez l'élément [0][0] : 5
Entrez l'élément [0][1] : 6
Entrez l'élément [1][0] : 7
Entrez l'élément [1][1] : 8
Entrez les éléments de la deuxième matrice :
Entrez l'élément [0][0] : 1
Entrez l'élément [0][1] : 2
Entrez l'élément [1][0] : 3
Entrez l'élément [1][1] : 4
Matrice résultante après soustraction :
4 4
4 4
Explication du code :
- Une nouvelle boucle imbriquée est ajoutée pour afficher la matrice
result printf("%d ", result[i][j])affiche chaque élément- Un
printf("\n")supplémentaire crée une nouvelle ligne après chaque ligne - La sortie affiche la matrice avec les valeurs soustraites
Résumé
Dans ce laboratoire, vous avez appris à lire les dimensions et les éléments d'une matrice à partir de l'entrée utilisateur dans un programme C pour la soustraction de matrices. Le programme permet aux utilisateurs d'entrer les dimensions et les valeurs de deux matrices, qui sont ensuite stockées dans deux tableaux bidimensionnels. Cette étape pose les bases pour l'étape suivante, qui consiste à soustraire les éléments correspondants des deux matrices et à afficher la matrice résultante.
Le programme invite l'utilisateur à entrer le nombre de lignes et de colonnes, puis le guide à saisir les éléments des première et deuxième matrices. Cela garantit que le programme peut gérer correctement des matrices de tailles différentes et stocker les données d'entrée pour un traitement ultérieur.



