MATRIZ EN DEV - C++
el siguiente es el primer ejercicio que hice con matrices. Quizás alguno de estos ejercicios te puedan servir como una base.
Puedes leer el post anterior sobre vectores, matrices y punteros si aún no haz trabajo con ellos.
Recomiendo que intentes y practiques mucho antes de copiar y pegar. Si te sientes estancado en algún problema recién trata de buscar una guía para llegar a la solución.
Esta clase matriz tendrá 3 atributos: Matriz, número de filas y número de columnas. Tiene un constructor por defecto, constructor copia y un constructor por parámetro que recibe el número de filas y columnas.
Las siguientes funciones fueron implementadas:
- Generar una matriz dinámicamente
- LLenar la matriz desde teclado:
- Llenar la matriz aleatoriamente:
- Imprimir la matriz
- Hallar el mayor elemento.
- Hallar el menor elemento.
- Hallar la moda.
- Intercambiar filas.
- Intercambiar columnas.
- Sumar otra matriz: Sumar 2 objetos de tipo matriz retornar otra matriz. Ejem: c = a + b.
- Restar otra matriz: Igual que la suma. Ejem: c = a – b
- Multiplicar por otra matriz: Ejem: c = a * b. El nro de filas de a debe ser igual al nro de columnas de b
- Multiplicar por un escalar: Ingreso un número y todos los elementos de la matriz se multiplican por ese número.
- Hallar matriz transpuesta: matr[m][n] su transpuesta es matr[n][m]. Se obtiene cambiando filas por columnas. Donde los elementos de la fila m ahora pertenecen a la columna m de la transpuesta.
- Verificar si es simétrica: Una matriz es simétrica si es cuadrada(filas = columnas) y cuando su transpuesta es igual a su matriz original.
- Verificar si es identidad: Es identidad si tiene todos sus elementos nulos excepto los de la diagonal principal que son iguales a 1.
NOTA: He aplicado un poco de templates para manejar la matriz con varios tipos de datos (int, float, char, double) y sobrecarga de operadores para la suma, resta y multiplicación de matrices.
Recien estoy aprendiendo a usar estas 2 características importantes del lenguaje (templates y sobrecarga de operadores).
En breve:
Un template es una manera de que funciones, clases, métodos puedan ser usados con varios tipos de datos. Imagínense crear una lista de datos y tener que crear funciones insertar, eliminar, buscar, concatenar, etc para cada tipo de dato. Si los métodos y la clase tienen la misma lógica para que reescribir código si podemos reutilizar.
La sobrecarga de operadores es una manera de realizar las mismas operaciones que solemos hacer con tipos de datos comunes con tipos abstractos de datos. Por ejemplo, la sobrecarga me permitió sumar 2 objetos de tipo Matriz y almacenar el resultado en otro objeto Matriz, del modo c = a + b
Aquí está la definición e implementación de la clase Matriz.
SUMA DE MATRICES EN DEV C++
Realizar un programa que permita realizar la suma de matrices en un ejercicio recurrentes de los cursos de programación, y se puede estructurar más fácil el programa si se tienen conocimientos de álgebra lineal.
A continuación el código para realizar la suma de 2 matrices que deben tener igual número, tanto de filas, como de columnas.
Si se compila y ejecuta el programa en Dev-C se verá que los resultados de la suma se imprimen en texto plano, pero reestructurando el ciclo for que los imprime, es posible lograr un atractivo gráfico en la impresión de dicha matriz resultado.
A continuación el código para realizar la suma de 2 matrices que deben tener igual número, tanto de filas, como de columnas.
#include <iostream>
using namespace std;
int row,fil,i,j;
int main()
{
cout <<"Ingrese el numero de filas "<<endl;
cin >>fil;
cout <<"Ingrese el numero de columnas "<<endl;
cin >>row;
int matriz1[fil][row];
for (i=0;i<=fil-1;i++)
{
for (j=0;j<=row-1;j++)
{
cout <<"Ingrese la posicion "<<"("<<i<<")"<<"("<<j<<")"<<" de la matriz 1"<<endl;
cin >>matriz1[i][j];
}
}
system("pause");
int matriz2[fil][row];
for (i=0;i<=fil-1;i++)
{
for (j=0;j<=row-1;j++)
{
cout <<"Ingrese la posicion "<<"("<<i<<")"<<"("<<j<<")"<<" de la matriz 2"<<endl;
cin >>matriz2[i][j];
}
}
system("pause");
cout << "A continuacion se sumaran las matrices ingresadas "<<endl;
system("pause");
int matriz3[fil][row];
for (i=0;i<=fil-1;i++)
{
for (j=0;j<=row-1;j++)
{
matriz3[i][j]= matriz1[i][j]+matriz2[i][j];
cout << "Valor posicion "<<"("<<i<<")"<<"("<<j<<"): "<<matriz3[i][j]<<endl;
}
}
cout << "Gracias por usar este programa "<<endl;
system("pause");
return 0;
}
Si se compila y ejecuta el programa en Dev-C se verá que los resultados de la suma se imprimen en texto plano, pero reestructurando el ciclo for que los imprime, es posible lograr un atractivo gráfico en la impresión de dicha matriz resultado.






0 comentarios:
Publicar un comentario