Умножение матриц разных размерностей
Добавлено: 31 мар 2013, 16:45
программа с функциями для транспонирования и умножения матриц. Подскажите пожалуйста , как переделать так чтобы функция multiply могла перемножать не только матрицы 3 на 3 , но и матрицу 3 на 3 на матрицу 3 на 1, и как организовать проверку размерностей матриц.
Код: Выделить всё
int **transpose(int **arr, int x, int y){
int **tmass;
tmass=new int*[x];
for (int i=0; i<x; i++){
tmass[i]=new int[y];
for (int j=0; j<y; j++){
tmass[i][j]=arr[j][i];
}
}
return tmass;
}
int **multiply(int **massiv1, int **massiv2, int x ,int y){
int **ResultMatrix=new int*[x];
int sum;
for (int i=0; i<x; i++){
ResultMatrix[i]=new int[y];
for (int j=0; j<y; j++){
sum=0;
for (int n=0; n<y; n++){
sum+=massiv1[i][n]*massiv2[n][j];
}
ResultMatrix[i][j]=sum;
}
}
return ResultMatrix;
}
int main()
{
int **E=new int*[3];
int **A=new int*[3];
int **X=new int*[3];
int **B=new int*[3];
for (int i=0; i<3; i++){
A[i]=new int[i];
E[i]=new int[i];
B[i]=new int[i];
X[i]=new int[i];
for(int j=0;j<3;j++){
A[i][j]=rand()%(9+9+1)-9;
B[i][j]=rand()%(9+9+1)-9;
if (i!=j){
E[i][j]=0;
}
else {E[i][i]=1;}
}
cout<<endl;
}
for (int i=0; i<3; i++){
for(int j=0;j<1;j++){
X[i][j]=rand()%(9+9+1)-9;
//cout<<X[i][j]<<",";
}
//cout<<endl;
}
int **AE=multiply(A, X, 1, 3);
for (int g=0; g<3; g++){
for (int k=0;k<3; k++){
cout<<AE[g][k]<<",";
}
cout<<endl;
}
getch();
return 0;