//POLIMORFISMO
#include <iostream>
using namespace std;
class MATRIZ
{
public:
MATRIZ();
virtual void Genera_Matriz();
void Imprime_Matriz();
~MATRIZ();
protected:
int FIL, COL, i, j;
float **mat;
};
class MATRIZ_M : public MATRIZ
{
public:
MATRIZ_M();
~MATRIZ_M();
void Genera_Matriz();
};
class MATRIZ_I : public MATRIZ
{
public:
MATRIZ_I();
~MATRIZ_I();
void Genera_Matriz();
};
class MATRIZ_R : public MATRIZ
{
public:
MATRIZ_R();
~MATRIZ_R();
void Genera_Matriz();
};
MATRIZ::MATRIZ()
{
FIL = COL = 1;
mat = NULL;
}
MATRIZ::~MATRIZ()
{
for (int i = 0; i < FIL; i++)
{
delete[] mat[i];
}
delete[] mat;
}
void MATRIZ::Genera_Matriz()
{
cout << "======================================"<<endl;
cout << "Introduce filas: ";
while (!(cin >> FIL) || FIL <= 0)
{
cout << "Entrada invalida. Por favor, introduce un número positivo: ";
cin.clear();
cin.ignore(10000, '\n');
}
cout << "Introduce columnas: ";
while (!(cin >> COL) || COL <= 0) {
cout << "Entrada inválida. Por favor, introduce un número positivo: ";
cin.clear();
cin.ignore(10000, '\n');
}
mat = new float *[FIL];
for (i = 0; i < FIL; i++) {
mat[i] = new float[COL];
}
for (i = 0; i < FIL; i++) {
for (j = 0; j < COL; j++) {
mat[i][j] = 0;
}
}
}
void MATRIZ::Imprime_Matriz() {
for (i = 0; i < FIL; i++) {
for (j = 0; j < COL; j++) {
cout << mat[i][j] << "\t";
}
cout << endl;
}
}
MATRIZ_M::MATRIZ_M() : MATRIZ() {}
MATRIZ_M::~MATRIZ_M() {}
void MATRIZ_M::Genera_Matriz() {
MATRIZ::Genera_Matriz();
int n = 2;
for (i = 0; i < FIL; i++) {
for (j = 0; j < COL; j++) {
mat[i][j] = n;
n += 2;
}
}
}
MATRIZ_I::MATRIZ_I() : MATRIZ() {}
MATRIZ_I::~MATRIZ_I() {}
void MATRIZ_I::Genera_Matriz() {
MATRIZ::Genera_Matriz();
for (i = 0; i < FIL; i++) {
for (j = 0; j < COL; j++) {
mat[i][j] = (i == j) ? 1 : 0;
}
}
}
MATRIZ_R::MATRIZ_R() : MATRIZ() {}
MATRIZ_R::~MATRIZ_R() {}
void MATRIZ_R::Genera_Matriz() {
MATRIZ::Genera_Matriz();
int seed = 7; // Valor semilla fijo para simular "aleatoriedad"
for (i = 0; i < FIL; i++) {
for (j = 0; j < COL; j++) {
seed = (seed * 3 + 7) % 100; // Operación para generar un patrón pseudoaleatorio
mat[i][j] = static_cast<float>(seed);
}
}
}
void polimorfismo()
{
int opc;
MATRIZ *matriz1 = new MATRIZ_M();
MATRIZ *matriz2 = new MATRIZ_I();
MATRIZ *matriz3 = new MATRIZ_R();
do
{
cout << "********************************"<<endl;
cout << "[1]. Matriz de multiplos de 2" << endl;
cout << "[2]. Matriz Identidad" << endl;
cout << "[3]. Matriz Aleatoria" << endl;
cout << "[4]. Salir" << endl;
cout << "INTRODUCE UNA OPCION: ";
while (!(cin >> opc) || opc < 1 || opc > 4) {
cout << "NO SE PUEDE ES DE 1 AL 4";
cin.clear();
cin.ignore(10000, '\n');
}
switch (opc)
{
case 1:
matriz1->Genera_Matriz();
matriz1->Imprime_Matriz();
break;
case 2:
matriz2->Genera_Matriz();
matriz2->Imprime_Matriz();
break;
case 3:
matriz3->Genera_Matriz();
matriz3->Imprime_Matriz();
break;
case 4:
cout << "Salir..." << endl;
break;
}
} while (opc != 4);
delete matriz1;
delete matriz2;
delete matriz3;
}
int main()
{
polimorfismo();
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: