Struct Matrix

This is an example of the usefull of templates:



#include <iostream>
using namespace std;

template<int W, int H>
struct Matrix{
    double m[W][H];
};

template<int sizeX,int sizeY>
void imprimir(const Matrix<sizeX,sizeY> & A){
     for(int i=0;i<sizeX;i++){
         for(int j=0;j<sizeY;j++)
             cout << A.m[i][j]<<" ";
         cout << endl;
     }
}

//A*B=C sizeX(files de A), sizeY=columnes de B sizeY
template<int sizeAX,int sizeAY, int sizeBY>
void mult(const Matrix<sizeAX,sizeAY>& A,const Matrix<sizeAY,sizeBY>& B, Matrix<sizeAX,sizeBY>& C){//,const double & B,double & C){

     for(int i=0;i<sizeAX;i++)
         for(int j=0;j<sizeBY;j++)
             for(int k=0;k<sizeAY;k++)
                 C.m[i][j]+=A.m[i][k]*B.m[k][j];
         imprimir(C);

}
int main(){
     Matrix<4,1> B={1,2,3,4};
     Matrix<4,4> A={0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1};
     Matrix<4,1> C={0,0,0,0};

     //A(4x4) B(4x1) C(4x1)
     mult(A,B,C);
     cout <<"\n";

}

1 comment:

  1. Just acabem de comensar a fer templates a teoria, això és com un nivell més endavant. Però sí, es veu més ordenat i general (no necessites dades tant concretes).

    Aviam si per la propera pràctica puc aplicar algo com això :3

    ReplyDelete