Red de conocimiento informático - Conocimiento informático - Defina una clase de matriz real m*n Matrix, sobrecargue los operadores " ", "-" y "=" para implementar operaciones de suma, resta y asignación de matrices.

Defina una clase de matriz real m*n Matrix, sobrecargue los operadores " ", "-" y "=" para implementar operaciones de suma, resta y asignación de matrices.

La implementación de una matriz bidimensional con una matriz unidimensional es más fácil mediante el mapeo de subíndices.

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;

}