Дмитрий А
Гуру
(3659)
5 лет назад
Вроде должно быть так.
#include
using namespace std;
int Transpose(int **Matrix, int size){
int temp;
for(int i = 0; i < size; i++){
for(int j = 0; j < size; j++){
temp = Matrix[i][j];
Matrix[i][j] = Matrix[j][i];
Matrix[j][i] = temp;
}
}
return **Matrix;
}
int Mult(int **M1, int **M2,int n){
int **ResMatrix = new int*[n];
for(int i = 0; i < n; i++)
ResMatrix[i] = new int[n];
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
for(int k = 0; k < n; k++)
ResMatrix[i][j] += M1[i][k] * M2[k][j];
return **ResMatrix;
}
int main(){
cout << "n: \n";
int n; cin >> n;
// Выделение памяти под матрицу.
int **Matrix = new int*[n];
for(int i = 0; i < n; i++)
Matrix[i] = new int[n];
// Заполнение матрицы случайными числами.
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
Matrix[i][j] = rand()%100;
// Единичная матрица.
int **UnitMatrix = new int*[n];
for(int i = 0; i < n; i++)
UnitMatrix[i] = new int[n];
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
UnitMatrix[i][j] = (i == j) ? 1 : 0;
// Определение.
int **ResMatrix = new int*[n];
for(int i = 0; i < n; i++)
ResMatrix[i] = new int[n];
int **TMatrix = new int*[n];
for(int i = 0; i < n; i++)
TMatrix[i] = new int[n];
**TMatrix = Transpose(Matrix, n);
**ResMatrix = Mult(Matrix, TMatrix, n);
// Проверка.
bool flag = false;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(ResMatrix[i][j] == UnitMatrix[i][j])
flag = true;
else
flag = false;
}
}
if(flag)
cout << "True.\n";
else
cout << "False.\n";
// Освобождение памяти.
for(int i = 0; i < n; i++)
delete[] Matrix[i];
for(int i = 0; i < n; i++)
delete[] UnitMatrix[i];
for(int i = 0; i < n; i++)
delete[] ResMatrix[i];
for(int i = 0; i < n; i++)
delete[] TMatrix[i];
return 0;
}
Задача: