Addition de deux matrices en C

CBeginner
Pratiquer maintenant

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 10 définit une limite maximale pour les dimensions des matrices
  • scanf() est utilisé pour lire les entrées entières pour les lignes, les colonnes et les éléments des matrices
  • Des boucles for imbriqué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 result est créé pour stocker la somme des éléments des matrices
  • Des boucles for imbriquées parcourent chaque élément des deux matrices
  • result[i][j] = matrix1[i][j] + matrix2[i][j] additionne les éléments correspondants
  • printf() 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 %4d assure 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.