Defina una clase de matriz real m*n Matrix, sobrecargue los operadores " ", "-" y "=" para implementar operaciones de suma, resta y asignación de matrices.
Por ejemplo, suponiendo que a es una matriz unidimensional que contiene m*n elementos, *(a i*n j) puede considerarse como la m-ésima fila y la enésima columna de una matriz bidimensional que contiene m filas y n columnas.
El siguiente es el programa completo:
#includelt;iostreamgt;
Usando namespace std;
class Matrix{
flotador* a;
int m, n;
público:
Matriz(float* s=0, int y=0, int z=0)
{
//this-gt; a = a;
m = y
n = z; ;
if(m==0 || n==0)
a=0;
else{
a = new float[m*n]; //[m][n];
for(int i = 0; ilt; m; i)
for( int j = 0; jlt; n; j)
*(a i*n j) = *(s i*n j); ;
}
}
Matrix(Matrixamp; s){ //copiar constructor
m=s.m;
n=s.n;
a = new float[m*n]; //[m][n];
for(int i = 0; ilt; m ; i )
for(int j = 0 ; jlt; n ; j )
*(a i*n j) = *(s.a i*n j); p> }
~Matrix() //()
{
// for(int i = 0; ilt; m; i)< / p>
eliminar[] a; //p[i];
}
Operador de matriz=(Matrixamp; d)
{
if(amp;d==this)
return *this;
if(a!=0)
eliminar[ ] a;
m=d.m;
n=d.n;
a = nuevo flotante[d.m*d.n]; int i = 0; ilt; m; i)
for(int j = 0; jlt; n; j)
*(a i*n j)=*(d.a i * n j); //*(a i) j = d.a[i][j];
*(d.a i*n j); //*(d.a i) j = d.a[i][j ] ;
{
coutlt; "Por favor ingrese " lt; m lt; "*" lt;
for(int i = 0; ilt; m; i)
for(int j = 0; jlt; n; j)
cingt; ; *(s i*n j); //a[i][j];
}
int main()
{
int m, n;
coutlt; "Ingrese el número de filas y columnas:"
gt; p>
flotador *s, *d; /s[m][n], d[m][n]
s=nuevo flotador[m*n];
d=new float[m*n];
Entrada(s, m, n
Entrada(d, m, n); p> Matriz a(s, m, n);
Matriz b;
Matriz c (s, m, n
cout lt; ; " Matriz a:\n";
a.display();
cout lt;lt; "Matriz b:\n";
b .display ();
cout lt; "Matriz c:\n";
c.display(); /p >
cout lt;lt;" Matriz b (=a):\n";
b.display();
c = a b;
cout lt; "Matriz c (=a b):\n"
c.display()
c = a - b
cout lt;lt; "Matriz c (=a b):\n";
c = a - b;
cout lt;lt; =a-b) ):\n";
c.display();
eliminar[] s;
eliminar[] d;
devuelve 0;
}