Soustraire Deux Matrices en C

CBeginner
Pratiquer maintenant

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
  • rows et cols stockent les dimensions des matrices
  • Deux tableaux 2D matrix1 et matrix2 sont 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 result est 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 de matrix1 et matrix2
  • 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.