Ejercicios con matrices en C++

Matrices en C++

En esta entrada vamos a resolver el siguiente ejercicio con matrices en C++. Recordemos que una matriz es un array o arreglo, el cual es una estructura de datos cuyos elementos son del mismo tipo. Un arreglo tiene dimensiones. A los arreglos de una dimensión se les conoce como vectores; a los de dos dimensiones se les suele llamar matrices o tablas y a los de 3 a más dimensiones simplemente arreglos de N dimensiones.

matrices en c++

Operaciones en C++

A continuación se presenta un resumen de algunas de las operaciones más comunes:

  1. Declaración de una matriz: Para declarar una matriz en C++, se utiliza la siguiente sintaxis:
				
					tipo nombre_matriz [num_filas] [num_columnas];
				
			

Donde “tipo” es el tipo de dato de los elementos de la matriz, “nombre_matriz” es el nombre que se le da a la matriz, “num_filas” es el número de filas de la matriz y “num_columnas” es el número de columnas de la matriz.

  1. Inicialización de una matriz: Para inicializar una matriz en C++, se utiliza la siguiente sintaxis:
				
					tipo nombre_matriz [num_filas] [num_columnas] = {{valores_fila1}, {valores_fila2}, ... , {valores_filaN}};

				
			

Donde “tipo” es el tipo de dato de los elementos de la matriz, “nombre_matriz” es el nombre que se le da a la matriz, “num_filas” es el número de filas de la matriz, “num_columnas” es el número de columnas de la matriz y “valores_filaX” son los valores que se le asignan a la fila X.

  1. Acceso a elementos de una matriz: Para acceder a un elemento específico de una matriz en C++, se utiliza la siguiente sintaxis:
				
					nombre_matriz[fila][columna]

				
			

Donde “nombre_matriz” es el nombre de la matriz, “fila” es el número de la fila del elemento que se quiere acceder y “columna” es el número de la columna del elemento que se quiere acceder.

  1. Suma de matrices: La suma de matrices se realiza sumando los elementos correspondientes de las dos matrices. Para realizar esta operación en C++, se puede utilizar el siguiente código:
				
					for (int i = 0; i < num_filas; i++) {
    for (int j = 0; j < num_columnas; j++) {
        matriz_resultado[i][j] = matriz1[i][j] + matriz2[i][j];
    }
}

				
			
  1. Multiplicación de matrices: La multiplicación de matrices se realiza multiplicando cada elemento de una fila de la primera matriz por cada elemento de una columna de la segunda matriz y sumando los resultados. Para realizar esta operación en C++, se puede utilizar el siguiente código:
				
					for (int i = 0; i < num_filas_matriz1; i++) {
    for (int j = 0; j < num_columnas_matriz2; j++) {
        matriz_resultado[i][j] = 0;
        for (int k = 0; k < num_columnas_matriz1; k++) {
            matriz_resultado[i][j] += matriz1[i][k] * matriz2[k][j];
        }
    }
}

				
			

Estas son solo algunas de las operaciones que se pueden realizar con matrices en C++. Es importante tener en cuenta que las matrices deben ser del mismo tamaño para poder realizar algunas de estas operaciones.

Ejercicio de programación usando matrices en C++

El siguiente ejercicio nos permitirá poner a prueba los conocimientos que tengamos sobre el uso de matrices en C++. Se necesitarán conocer conceptos básicos como matriz, diagonal principal y transpuesta de una matriz.

Escriba un programa en C++ que permita realizar lo siguiente (usando matrices):

    a) Almacene números aleatorios (menores o iguales a 10) en una matriz de 5 * 6. 
    b) Recorra la matriz: mostrando sus elementos
    c) Imprima la suma de los números almacenados en la matriz. 
    d) Imprima la suma de los números pares almacenados en la matriz
    e) Imprima la suma de los números impares almacenados en la matriz
    f) Imprima la suma de cada columnas
    g) Imprima la suma de cada fila
    h) Imprima la suma de los elementos de la diagonal principal
    i) Imprima la transpuesta de la matriz

Captura de pantalla del programa

Código fuente

				
					/* Hacer un algoritmo que:
	a) Almacene números aleatorios (menores o iguales a 10) en una matriz de 5 * 6. 
	b) Recorra la matriz: mostrando sus elementos
	c) Imprima la suma de los números almacenados en la matriz. 
	d) Imprima la suma de los números pares almacenados en la matriz
	e) Imprima la suma de los números impares almacenados en la matriz
	f) Imprima la suma de cada columnas
	g) Imprima la suma de cada fila
	h) Imprima la suma de los elementos de la diagonal principal
	i) Imprima la transpuesta de la matriz
	*/

#include <iostream>
#include <cstdlib>
#include <ctime>

#define FILAS 5
#define COLUMNAS 6
#define MAX_VALOR 10

using namespace std;

void llenarMatriz(int matriz[FILAS][COLUMNAS], int filas, int columnas);
void mostrarMatriz(int matriz[FILAS][COLUMNAS], int filas, int columnas);
int sumarElementosMatriz(int matriz[FILAS][COLUMNAS], int filas, int columnas);
int sumarParesMatriz(int matriz[FILAS][COLUMNAS], int filas, int columnas);
int sumarImparesMatriz(int matriz[FILAS][COLUMNAS], int filas, int columnas);
void mostrarSumaColumnas(int matriz[FILAS][COLUMNAS], int filas, int columnas);
void mostrarSumaFilas(int matriz[FILAS][COLUMNAS], int filas, int columnas);
void mostrarMatrizTranspuesta(int matriz[FILAS][COLUMNAS], int filas, int columnas);

int main() {
	srand(time(NULL));

	// Se declara la matriz
	int matriz[FILAS][COLUMNAS];
	int suma = 0;
	int sumaPares = 0;
	int sumaImpares = 0;
	int sumaDiagonalPrincipal = 0;

	// a) Almacene números aleatorios (menores que 100) en una matriz de 5 * 6. 
	llenarMatriz(matriz, FILAS, COLUMNAS);

	// b) Recorra la matriz: mostrando sus elementos
	mostrarMatriz(matriz, FILAS, COLUMNAS);

	// c) Imprima la suma de los números almacenados en la matriz
	suma = sumarElementosMatriz(matriz, FILAS, COLUMNAS);
	cout << "\nLa suma de los elementos de la matriz es: " << suma << endl;

	// d) Imprima la suma de los números pares almacenados en la matriz
	sumaPares = sumarParesMatriz(matriz, FILAS, COLUMNAS);
	cout << "\nLa suma de los numeros PARES de la matriz es: " << sumaPares << endl;
	
	// e) Imprima la suma de los números impares almacenados en la matriz
	sumaImpares = sumarImparesMatriz(matriz, FILAS, COLUMNAS);
	cout << "\nLa suma de los numeros IMPARES de la matriz es: " << sumaImpares << endl;

	// f) Imprima la suma de cada columnas
	mostrarSumaColumnas(matriz, FILAS, COLUMNAS);
	
	// g) Imprima la suma de cada fila
	mostrarSumaFilas(matriz, FILAS, COLUMNAS);

	// i) Imprima la transpuesta de la matriz
	mostrarMatrizTranspuesta(matriz, FILAS, COLUMNAS);
	return 0;
}

void llenarMatriz(int matriz[FILAS][COLUMNAS], int filas, int columnas) {
	for (int i = 0; i < filas; ++i) {
		for (int j = 0; j < columnas; ++j) {
			matriz[i][j] = rand() % (MAX_VALOR + 1); // números aleatorios menores o iguales a MAX_VALOR
		}
	}
}

void mostrarMatriz(int matriz[FILAS][COLUMNAS], int filas, int columnas) {
	cout << "La matriz es: " << endl;
	for (int i = 0; i < filas; ++i) {
		for (int j = 0; j < columnas; ++j) {
			cout << "\t" << matriz[i][j];
		}
		cout << endl;
	}
}

int sumarElementosMatriz(int matriz[FILAS][COLUMNAS], int filas, int columnas) {
	int suma = 0;
	for (int i = 0; i < filas; ++i) {
		for (int j = 0; j < columnas; ++j) {
			suma += matriz[i][j];
		}
	}

	return suma;
}

int sumarParesMatriz(int matriz[FILAS][COLUMNAS], int filas, int columnas) {
	int suma = 0;
	for (int i = 0; i < filas; ++i) {
		for (int j = 0; j < columnas; ++j) {
			if (matriz[i][j] % 2 == 0) {
				suma += matriz[i][j];
			}
		}
	}

	return suma;
}

int sumarImparesMatriz(int matriz[FILAS][COLUMNAS], int filas, int columnas) {
	int suma = 0;
	for (int i = 0; i < filas; ++i) {
		for (int j = 0; j < columnas; ++j) {
			if (matriz[i][j] % 2 != 0) {
				suma += matriz[i][j];
			}
		}
	}

	return suma;
}

void mostrarSumaColumnas(int matriz[FILAS][COLUMNAS], int filas, int columnas) {
	int suma = 0;
	cout << "\n";
	for (int j = 0; j < columnas; ++j) {
		suma = 0;
		for (int i = 0; i < filas; ++i) {
			suma += matriz[i][j];
		}
		cout << "La suma de la columna " << j << " es: " << suma << endl;
	}
}

void mostrarSumaFilas(int matriz[FILAS][COLUMNAS], int filas, int columnas) {
	int suma = 0;
	cout << "\n";
	for (int i = 0; i < filas; ++i) {
		suma = 0;
		for (int j = 0; j < columnas; ++j) {
			suma += matriz[i][j];
		}
		cout << "La suma de la fila " << i << " es: " << suma << endl;
	}
}

void mostrarMatrizTranspuesta(int matriz[FILAS][COLUMNAS], int filas, int columnas) {
	cout << "\nLa matriz transpuesta es: " << endl;
	for (int j = 0; j < columnas; ++j) {
		for (int i = 0; i < filas; ++i) {
			cout << "\t" << matriz[i][j];
		}
		cout << endl;
	}
}
				
			

Menú de opciones con submenús en C y C++

Menú de opciones con submenús en C y C++

En esta publicación te voy a mostrar un programa que cuenta con un menú de opciones principal con dos opciones, cada una de las cuales te lleva a un submenú. Este programa está escrito en C y C++ y te será muy útil para estudiarlo y poder utilizarlo en tus proyectos de programación.

Se ha dividido todo el programa en varias funciones. Esto nos da muchos beneficios ya que permite partir el programa en subprogramas o módulos, organiza el código y lo hace mucho más reutilizable acortando el tiempo de programación cuando éste se hace cada vez más grande.

En este programa puedes entrar a cada una de las opciones y luego retroceder de tal forma que es fácilmente navegable.

Si necesitas ejemplos de menús sin submenús puedes pasarte por esta entrada: https://algoritmosyalgomas.com/plantilla-de-un-menu-de-opciones-en-lenguaje-ansi-c/

Código fuente en lenguaje C

Código fuente en lenguaje C++