Imprimir la Matriz Transpuesta
En este paso final, aprenderás a formatear e imprimir la matriz transpuesta con una mejor legibilidad y manejo de errores. Mejoraremos el programa anterior para que la salida sea más profesional.
Abre el archivo matrix_transpose.c:
cd ~/project
nano matrix_transpose.c
Reemplaza el código anterior con la siguiente implementación mejorada:
#include <stdio.h>
#define MAX_FILAS 100
#define MAX_COLUMNAS 100
void printMatrix(int matrix[MAX_ROWS][MAX_COLS], int filas, int columnas, const char* titulo) {
printf("%s:\n", titulo);
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
printf("\n");
}
int main() {
int filas, columnas;
int matriz[MAX_FILAS][MAX_COLUMNAS];
int transpuesta[MAX_COLUMNAS][MAX_FILAS];
// Validación de entrada
do {
printf("Introduce el número de filas (1-%d): ", MAX_FILAS);
scanf("%d", &filas);
} while (filas <= 0 || filas > MAX_FILAS);
do {
printf("Introduce el número de columnas (1-%d): ", MAX_COLUMNAS);
scanf("%d", &columnas);
} while (columnas <= 0 || columnas > MAX_COLUMNAS);
// Introducir los elementos de la matriz
printf("Introduce los elementos de la matriz:\n");
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
printf("Introduce el elemento [%d][%d]: ", i, j);
scanf("%d", &matriz[i][j]);
}
}
// Transponer la matriz
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
transpuesta[j][i] = matriz[i][j];
}
}
// Imprimir matrices con formato
printMatrix(matriz, filas, columnas, "Matriz Original");
printMatrix(transpuesta, columnas, filas, "Matriz Transpuesta");
return 0;
}
Compila y ejecuta el programa:
gcc matrix_transpose.c -o matrix_transpose
./matrix_transpose
Salida de ejemplo:
Introduce el número de filas (1-100): 3
Introduce el número de columnas (1-100): 3
Introduce los elementos de la matriz:
Introduce el elemento [0][0]: 1
Introduce el elemento [0][1]: 2
Introduce el elemento [0][2]: 3
Introduce el elemento [1][0]: 4
Introduce el elemento [1][1]: 5
Introduce el elemento [1][2]: 6
Introduce el elemento [2][0]: 7
Introduce el elemento [2][1]: 8
Introduce el elemento [2][2]: 9
Matriz Original:
1 2 3
4 5 6
7 8 9
Matriz Transpuesta:
1 4 7
2 5 8
3 6 9
Mejoras clave en esta versión:
- Se añadió validación de entrada para las dimensiones de la matriz.
- Se creó una función
printMatrix() separada para una mejor organización del código.
- Se mejoró la impresión de la matriz con formato alineado usando
%4d.
- Se añadieron títulos a la salida de la matriz para mayor claridad.
- Maneja diferentes tamaños de matriz de forma más robusta.