Cómo Crear y Sumar Matrices en Lenguaje C con Menú Interactivo
Gestión y Suma de Elementos de una Matriz en Lenguaje C
El siguiente programa en lenguaje C implementa un menú interactivo por consola que permite al usuario ingresar las dimensiones y los valores de una matriz bidimensional de enteros (hasta un tamaño máximo definido por MAX) y calcular la suma acumulada de todos sus componentes.
Estructura del Código Fuente
El algoritmo se organiza mediante las siguientes operaciones fundamentales:
- Carga de datos: Solicita la cantidad de filas (
n) y columnas (m), recorriendo cada celda mediante dos buclesforanidados. - Cálculo de la sumatoria: Reinicializa el acumulador
sumaa cero y recorre la matriz sumando cada elementomatriz[i][j]. - Control del flujo: Utiliza una estructura iterativa
do-whilepara desplegar el menú hasta que el usuario decida salir (opción 3).
Código Fuente (Primer Bloque)
#include <stdio.h>
#define MAX 10
int main() {
int opcion;
int matriz[MAX][MAX];
int n = 0, m = 0;
int i, j;
int suma;
do {
printf("\nMenu\n");
printf("1.- Cargar una matriz de enteros\n");
printf("2.- Sumar los elementos de una matriz\n");
printf("3.- Salir\n");
printf("Elige una opcion: ");
scanf("%d", &opcion);
if (opcion == 1) {
printf("Introduce filas: ");
scanf("%d", &n);
printf("Introduce columnas: ");
scanf("%d", &m);
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
printf("Elemento [%d][%d]: ", i, j);
scanf("%d", &matriz[i][j]);
}
}
}
if (opcion == 2) {
suma = 0;
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
suma = suma + matriz[i][j];
}
}
printf("Suma = %d\n", suma);
}
if (opcion == 3) {
printf("ADIOS\n");
}
} while (opcion != 3);
return 0;
}Código Fuente (Segundo Bloque Conservado)
#include <stdio.h>
#define MAX 10
int main() {
int opcion;
int matriz[MAX][MAX];
int n = 0, m = 0;
int i, j;
int suma;
do {
printf("\nMenu\n");
printf("1.- Cargar una matriz de enteros\n");
printf("2.- Sumar los elementos de una matriz\n");
printf("3.- Salir\n");
printf("Elige una opcion: ");
scanf("%d", &opcion);
if (opcion == 1) {
printf("Introduce filas: ");
scanf("%d", &n);
printf("Introduce columnas: ");
scanf("%d", &m);
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
printf("Elemento [%d][%d]: ", i, j);
scanf("%d", &matriz[i][j]);
}
}
}
if (opcion == 2) {
suma = 0;
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
suma = suma + matriz[i][j];
}
}
printf("Suma = %d\n", suma);
}
if (opcion == 3) {
printf("ADIOS\n");
}
} while (opcion != 3);
return 0;
}Recomendaciones de Buenas Prácticas
- Validación de límites: Verificar siempre que los valores ingresados para
nymsean mayores que 0 y menores o iguales a la constanteMAX(10). - Uso de
switch-case: Reemplazar las sentenciasifsucesivas por una estructuraswitch (opcion)para optimizar la legibilidad del menú.