Introduction
Dans ce laboratoire, vous apprendrez à calculer la transposée d'une matrice en C. Le laboratoire couvre les étapes suivantes :
Lecture des dimensions et des éléments : Vous apprendrez à lire les dimensions (lignes et colonnes) d'une matrice et à la remplir avec les valeurs saisies par l'utilisateur. Cette étape établit les bases du processus de transposition de matrice.
Permutation des lignes et des colonnes : Le cœur de la transposition de matrice consiste à permuter les lignes et les colonnes de la matrice d'origine pour créer la matrice transposée.
Affichage de la matrice transposée : Enfin, vous apprendrez à afficher la matrice transposée, ce qui vous permettra de vérifier l'exactitude du processus de transposition.
À la fin de ce laboratoire, vous aurez une compréhension solide de la transposition de matrice et la capacité de l'implémenter en programmation C.
Lecture des dimensions et des éléments
Dans cette étape, vous apprendrez à lire les dimensions et les éléments d'une matrice dans un programme C pour la transposition de matrice. Nous allons créer un programme qui permet aux utilisateurs d'entrer le nombre de lignes et de colonnes, puis de remplir la matrice avec des valeurs.
Tout d'abord, créons un nouveau fichier C pour notre programme de transposition de matrice :
cd ~/project
nano matrix_transpose.c
Maintenant, ajoutez le code suivant pour lire les dimensions et les éléments de la matrice :
#include <stdio.h>
#define MAX_ROWS 100
#define MAX_COLS 100
int main() {
int rows, cols;
int matrix[MAX_ROWS][MAX_COLS];
// 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 matrice
printf("Entrez les éléments de la 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", &matrix[i][j]);
}
}
// Affichage de la matrice originale
printf("\nMatrice originale :\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
Compilez et exécutez le programme :
gcc matrix_transpose.c -o matrix_transpose
./matrix_transpose
Exemple de sortie :
Entrez le nombre de lignes : 3
Entrez le nombre de colonnes : 3
Entrez les éléments de la 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 l'élément [2][0] : 7
Entrez l'élément [2][1] : 8
Entrez l'élément [2][2] : 9
Matrice originale :
1 2 3
4 5 6
7 8 9
Décomposons les parties clés du code :
- Nous définissons la taille maximale de la matrice à l'aide de
MAX_ROWSetMAX_COLS scanf()est utilisé pour lire les entrées utilisateur pour les lignes, les colonnes et les éléments de la matrice- Des boucles imbriquées sont utilisées pour saisir et afficher les éléments de la matrice
- Le programme valide les entrées dans la taille maximale autorisée de la matrice
Permutation des lignes et des colonnes
Dans cette étape, vous apprendrez à transposer une matrice en permutant ses lignes et ses colonnes. Nous allons modifier le programme précédent pour créer une matrice transposée.
Ouvrez le fichier existant matrix_transpose.c :
cd ~/project
nano matrix_transpose.c
Remplacez le code précédent par l'implémentation suivante :
#include <stdio.h>
#define MAX_ROWS 100
#define MAX_COLS 100
int main() {
int rows, cols;
int matrix[MAX_ROWS][MAX_COLS];
int transposed[MAX_COLS][MAX_ROWS];
// 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 matrice
printf("Entrez les éléments de la 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", &matrix[i][j]);
}
}
// Transposition de la matrice
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
transposed[j][i] = matrix[i][j];
}
}
// Affichage de la matrice originale
printf("\nMatrice originale :\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// Affichage de la matrice transposée
printf("\nMatrice transposée :\n");
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
printf("%d ", transposed[i][j]);
}
printf("\n");
}
return 0;
}
Compilez et exécutez le programme :
gcc matrix_transpose.c -o matrix_transpose
./matrix_transpose
Exemple de sortie :
Entrez le nombre de lignes : 3
Entrez le nombre de colonnes : 3
Entrez les éléments de la matrice :
Entrez l'élément [0][0] : 1
...
Matrice originale :
1 2 3
4 5 6
7 8 9
Matrice transposée :
1 4 7
2 5 8
3 6 9
Points clés sur la transposition de matrice :
- Nous créons une nouvelle matrice
transposedavec des dimensions inversées - La transposition est effectuée en permutant les lignes et les colonnes
transposed[j][i] = matrix[i][j]est la transformation clé- Les dimensions de la matrice originale et de la matrice transposée sont inversées
Affichage de la matrice transposée
Dans cette dernière étape, vous apprendrez à formater et afficher la matrice transposée avec une meilleure lisibilité et une gestion des erreurs améliorée. Nous allons améliorer le programme précédent pour rendre la sortie plus professionnelle.
Ouvrez le fichier matrix_transpose.c :
cd ~/project
nano matrix_transpose.c
Remplacez le code précédent par l'implémentation améliorée suivante :
#include <stdio.h>
#define MAX_ROWS 100
#define MAX_COLS 100
void printMatrix(int matrix[MAX_ROWS][MAX_COLS], int rows, int cols, const char* title) {
printf("%s:\n", title);
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 matrix[MAX_ROWS][MAX_COLS];
int transposed[MAX_COLS][MAX_ROWS];
// Validation des entrées
do {
printf("Entrez le nombre de lignes (1-%d) : ", MAX_ROWS);
scanf("%d", &rows);
} while (rows <= 0 || rows > MAX_ROWS);
do {
printf("Entrez le nombre de colonnes (1-%d) : ", MAX_COLS);
scanf("%d", &cols);
} while (cols <= 0 || cols > MAX_COLS);
// Saisie des éléments de la matrice
printf("Entrez les éléments de la 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", &matrix[i][j]);
}
}
// Transposition de la matrice
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
transposed[j][i] = matrix[i][j];
}
}
// Affichage des matrices avec un formatage amélioré
printMatrix(matrix, rows, cols, "Matrice originale");
printMatrix(transposed, cols, rows, "Matrice transposée");
return 0;
}
Compilez et exécutez le programme :
gcc matrix_transpose.c -o matrix_transpose
./matrix_transpose
Exemple de sortie :
Entrez le nombre de lignes (1-100) : 3
Entrez le nombre de colonnes (1-100) : 3
Entrez les éléments de la matrice :
...
Matrice originale :
1 2 3
4 5 6
7 8 9
Matrice transposée :
1 4 7
2 5 8
3 6 9
Améliorations clés de cette version :
- Ajout d'une validation des entrées pour les dimensions de la matrice
- Création d'une fonction
printMatrix()séparée pour une meilleure organisation du code - Amélioration de l'affichage de la matrice avec un formatage aligné à l'aide de
%4d - Ajout de titres aux sorties des matrices pour plus de clarté
- Prise en charge plus robuste de différentes tailles de matrices
Résumé
Dans ce laboratoire, vous apprendrez à lire les dimensions et les éléments d'une matrice, à permuter les lignes et les colonnes, et à afficher la matrice transposée dans un programme C. Tout d'abord, le programme invite l'utilisateur à saisir le nombre de lignes et de colonnes, puis lui permet d'entrer les éléments de la matrice. La matrice originale est ensuite affichée. Ensuite, le programme permute les lignes et les colonnes pour calculer la transposée de la matrice, et enfin, la matrice transposée est affichée.
Les points clés à retenir dans ce laboratoire incluent l'utilisation de scanf() pour lire les entrées utilisateur, l'implémentation de boucles imbriquées pour saisir et afficher les éléments de la matrice, et l'exécution de l'opération de transposition en permutant les lignes et les colonnes. Le programme démontre également l'utilisation de printf() pour afficher les matrices originale et transposée.



