int main(){ //Testeo de las funciones. TP3::Funciones func; Matriz* A = new Matriz(4,4); A->cambiarValor(1,1,6); Matriz* B = A->Identidad(5); Matriz* C = new Matriz(*B); B->cambiarFilas(1,2); Matriz* sub = A->SubMatriz(1,1); Matriz* D = (*B)+C; Matriz* E = new Matriz(*C); (*E)*7; Matriz* F = (*D)*E; cout << A << endl; cout << B << endl; cout << D << endl; cout << E << endl; F->cambiarValor(1,2,1); F->cambiarValor(4,0,8); cout << F << endl; Matriz* G = F->Transponer(); cout << G << endl; cout << sub << endl; delete A; delete B; delete C; delete D; delete E; delete F; delete G; delete sub; return 0; }
Matriz* Matriz::Identidad(const unsigned int n){ Matriz* res = new Matriz(n,n,0,0); for(int i =0;i<n;i++){ res->cambiarValor(i,i,1); } return res; }
Matriz* Matriz::operator+(Matriz* B){ Matriz* res = new Matriz(*B,_p,_q); for(int i=0; i< _fil;i++){ for(int j=0; j<_col;j++){ double newVal = elem(i,j) + (*B).elem(i,j); res->cambiarValor(i,j,newVal); } } return res; }
Matriz* Matriz::SubMatriz(const unsigned int k,const unsigned int l){ //Submatriz cuad. int tam = _fil - k; Matriz* res = new Matriz(tam,tam,_p,_q); for(int i=0; i<tam;i++){ for(int j=0;j<tam;j++){ double newVal = elem(k+i,l+j); res->cambiarValor(i,j,newVal); } } return res; }
Matriz* Matriz::operator*(Matriz* B){ int maxP = max(_p,B->_p); int maxQ = max(_q,B->_q); Matriz* res = new Matriz(_fil,B->Columnas(), maxP, maxQ); //Matriz res = *this; for(int i =0; i< _fil;i++){ for(int j=0; j<B->Columnas();j++){ double temp = 0; for (int k = 0; k < _col; k++){ temp = temp + ((elem(i,k) * B->elem(k,j))); } res->cambiarValor(i,j,temp); } } return res; };