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";
}
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).
ReplyDeleteAviam si per la propera pràctica puc aplicar algo com això :3