This is a code that I wrote weeks ago, mainly to calculate the determinant of a squae matrix.
It’s written in c++. Enjoy it!
#include <iostream> using namespace std; template<typename T> class Matrix{ T **m; int n; void rot90(){ T ** tmp=new T*[n]; for(int i=0;i<n;i++){ tmp[i]=new T[n]; for(int j=0;j<n;j++){ tmp[i][j]=m[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ m[i][j]=tmp[n-1-j][i]; } } } Matrix<t> M(int i,int j){//get the matrix corresponds with specific minor Mij Matrix<t> TMP(n-1); for(int a=0;a<n-1;a++){ for(int b=0;b<n-1;b++){ int c=0,d=0; if(a<i) c=a; else c=a+1; if(b<j) d=b; else d=b+1; TMP.m[a][b]=m[c][d]; } } return TMP; } T C(int i,int j){//get cofactor Cij if((i+j)%2==0) return M(i,j).Det(); else return -1*M(i,j).Det(); } T A(int i,int j){ return m[i][j]*C(i,j); } public : Matrix(int para){ n=para; m=new T*[n]; for(int i=0;i<n;i++){ m[i]=new T[n]; for(int j=0;j<n;j++) m[i][j]=0; } } Matrix(){ int itmp=0; do{ cout<<"Please input the square matrix's n, and n has to be larger than 1"<<endl; cin>>itmp; } while(itmp<2); n=itmp; m=new T*[n]; for(int i=0;i<n;i++){ m[i]=new T[n]; for(int j=0;j<n;j++) m[i][j]=0; } } void Input(){ cout<<"Please initialize the matrix"<<endl; for(int i=0;i<n;i++){ for(int j=0;j<n;j++) cin>>m[i][j]; } cout<<"Initialization done"<<endl; } void Display(){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cout<<m[i][j]; if(j!=n-1) cout<<" "; } cout<<endl; } } void Display(int w){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cout<<setw(w)<<m[i][j]; } cout<<endl; } } void Display(int i,int j){ cout<<m[i][j]<<endl; } void Rotation(int times=1){ for(;times>3;times-=4){} for(;times<0;times+=4){} if(times!=0){ if(times==1) rot90(); else{ rot90(); Rotation(times-1); } } } T Det(){ if(n==2) return m[0][0]*m[1][1]-m[0][1]*m[1][0]; else{ T sum=0; for(int i=0;i<n;i++) sum+=A(0,i); return sum; } } };