Imprimir a Matriz Transposta
Neste passo final, aprenderá a formatar e imprimir a matriz transposta com melhor legibilidade e tratamento de erros. Melhoraremos o programa anterior para tornar a saída mais profissional.
Abra o ficheiro matrix_transpose.c:
cd ~/project
nano matrix_transpose.c
Substitua o código anterior pela seguinte implementação melhorada:
#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];
// Validação de entrada
do {
printf("Introduza o número de linhas (1-%d): ", MAX_ROWS);
scanf("%d", &rows);
} while (rows <= 0 || rows > MAX_ROWS);
do {
printf("Introduza o número de colunas (1-%d): ", MAX_COLS);
scanf("%d", &cols);
} while (cols <= 0 || cols > MAX_COLS);
// Introduzir os elementos da matriz
printf("Introduza os elementos da matriz:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Introduza o elemento [%d][%d]: ", i, j);
scanf("%d", &matrix[i][j]);
}
}
// Transpor a matriz
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
transposed[j][i] = matrix[i][j];
}
}
// Imprimir matrizes com saída formatada
printMatrix(matrix, rows, cols, "Matriz Original");
printMatrix(transposed, cols, rows, "Matriz Transposta");
return 0;
}
Compile e execute o programa:
gcc matrix_transpose.c -o matrix_transpose
./matrix_transpose
Exemplo de saída:
Introduza o número de linhas (1-100): 3
Introduza o número de colunas (1-100): 3
Introduza os elementos da matriz:
Introduza o elemento [0][0]: 1
Introduza o elemento [0][1]: 2
Introduza o elemento [0][2]: 3
Introduza o elemento [1][0]: 4
Introduza o elemento [1][1]: 5
Introduza o elemento [1][2]: 6
Introduza o elemento [2][0]: 7
Introduza o elemento [2][1]: 8
Introduza o elemento [2][2]: 9
Matriz Original:
1 2 3
4 5 6
7 8 9
Matriz Transposta:
1 4 7
2 5 8
3 6 9
Melhorias chave nesta versão:
- Adição de validação de entrada para as dimensões da matriz.
- Criação de uma função
printMatrix() separada para melhor organização do código.
- Melhoria da impressão da matriz com formatação alinhada usando
%4d.
- Adição de títulos à saída da matriz para maior clareza.
- Lidar com tamanhos de matriz diferentes de forma mais robusta.