ayuda con sobrecarga de operador =
Publicado por Luis (5 intervenciones) el 12/02/2020 04:52:45
ayuda, tengo que generar un matriz, en principio se le envia un valor directamente y se debe llenar de 0´s y despues liberar esa mamoria y reservar nueva memoria dinamica y leer los datos de la nueva matrz, modificando un datos despues de hacerlo ingresando la fila y columna del dato, el problema es que son dos objetos de la case y en la ultima funcion la cual es la sobrecarga del operador = debe igualarse la matriz a la matriz b. ya tengo todo solo que no se como utilizar esta sobrecarga
tengo 3 archivos.
la biblioteca matrizQ,
matrizQ.cpp
y el main.cpp
se supone debe imprimir algo como esto
tengo 3 archivos.
la biblioteca matrizQ,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef MATRIZQ_H
#define MATRIZQ_H
#include<iostream>
using namespace std;
class MatrizQ
{
public:
MatrizQ(int tamanio = 0);
~MatrizQ();////////////////////////////////////////////////
void pideleAlUsuariosTusDatos(void);
void muestraTusDatos(void);
int dameTuDatoRC(int renglon, int columna);
int dameTuTamanio(void);
void modificaTuDatoRC(int renglon, int columna, int valor);
MatrizQ& operator=(MatrizQ Q);//////////////////////////////////
private:
void verificaTusDatos(void);
void liberaMemoria(void);////////////////////////////
int** matriz;
int tamanio;
};
#endif // MATRIZQ_H
matrizQ.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include "MatrizQ.h"
MatrizQ::MatrizQ(int tamanio)
{
this->tamanio=tamanio;
this->matriz=NULL;
matriz=new int*[tamanio];
for(int i=0;i<tamanio;i++)
{
matriz[i]=new int[tamanio];
}
for(int i=0;i<this->tamanio;i++)
{
cout<<endl;
for(int j=0;j<this->tamanio;j++)
{
matriz[i][j]=0;
}
}
}
MatrizQ::~MatrizQ()
{
}
int MatrizQ::dameTuTamanio()
{
cin>>this->tamanio;
return this->tamanio;
}
void MatrizQ::verificaTusDatos()
{
if(this->tamanio<0)
{
cout<<"el tamanio de la matriz no puede ser negativo, por favor ingresa otro valor: ";
}
}
void MatrizQ::pideleAlUsuariosTusDatos()
{
if(matriz!=NULL)
{
for(int i=0;i<this->tamanio;i++)
delete []matriz[i];
delete []matriz;
}
cout<<endl<<"Dame el orden de la matriz A"<<endl<<"tamanio: ";
do
{
this->dameTuTamanio();
this->verificaTusDatos();
}while(this->tamanio<0);
/**RESERVA DE MEMORIA DINAMICA*/
matriz=new int*[this->tamanio];
for(int i=0;i<=this->tamanio;i++)
{
matriz[i]=new int[this->tamanio];
}
/**LECTURA DE LOS DATOS DE LA MATRIZ*/
cout<<"ingresa los datos de la matriz"<<endl;
for(int i=0;i<this->tamanio;i++)
{
for(int j=0;j<this->tamanio;j++)
{
cout<<"ingresa el dato en la posicion ["<<i+1<<"]["<<j+1<<"]:";
cin>>matriz[i][j];
}
}
}
void MatrizQ::muestraTusDatos()
{
for(int i=0;i<this->tamanio;i++)
{
cout<<endl;
for(int j=0;j<this->tamanio;j++)
{
cout<<"["<<matriz[i][j]<<"] ";
}
}
cout<<endl;
}
int MatrizQ::dameTuDatoRC(int renglon, int columna)
{
renglon=renglon;
columna=columna;
return matriz[renglon][columna];
}
void MatrizQ::modificaTuDatoRC(int renglon, int columna, int valor)
{
renglon=renglon;
columna=columna;
this->matriz[renglon][columna]=valor;
}
MatrizQ& MatrizQ::operator=(MatrizQ Q)
{
if()
}
else
{
}
}
for(int i=0;i<this->tamanio;i++)
{
for(int j=0;j<this->tamanio;j++)
this->modificaTuDatoRC(i,j,Q.dameTuDatoRC(i,j));
}
return *this;
}
y el main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include "MatrizQ.h"
using namespace std;
int main()
{
MatrizQ A(2),B(3);
cout << "Matriz A " << endl;
A.muestraTusDatos();
cout << "Matriz B " << endl;
B.muestraTusDatos();
A.pideleAlUsuariosTusDatos();
cout << "Matriz A " << endl;
A.muestraTusDatos();
cout << "El orden de la matriz es: " << A.dameTuTamanio()<< endl;
cout << "Dame el dato almacenado en la posicion 2,2 es: "
<< A.dameTuDatoRC(2,2) << endl;
/*cout << "Dame el dato almacenado en la posicion -2,2 es:";
<< A.dameTuDatoRC(-2,2);
cout << "Dame el dato almacenado en la posicion 2,-2 es:"
<< A.dameTuDatoRC(2,-2); */
A.modificaTuDatoRC(2,2,100);
cout << "Matriz A " << endl;
A.muestraTusDatos();
B = A;
cout << "Matriz B " << endl;
B.muestraTusDatos();
return 0;
}
se supone debe imprimir algo como esto
Valora esta pregunta
0