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