输出是从您输入的矩阵中打印出矩阵的转置,但是我的代码只是打印出您输入的第一个矩阵
它没有显示任何错误,所以我真的不知道该怎么做
#include <iostream>
using namespace std;
int NhapMang(int A[100][100], int n)
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
cout << "Nhap A[" << i << "][" << j << "]: ";
cin >> A[i][j];
}
}
return 0;
}
int XuatMang(int A[100][100], int n)
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
cout << A[i][j] << " ";
}
cout << "\n";
}
return 0;
}
int DoiGiaTri(int &a, int &b)
{
int tam = a;
a = b;
b = tam;
return 0;
}
int ChuyenVi(int A[100][100], int n)
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
DoiGiaTri(A[i][j], A[j][i]);
}
}
XuatMang(A,n);
return 0;
}
int main()
{
int n, A[100][100];
cout << "moi nhap n: ";
cin >> n;
NhapMang(A,n);
XuatMang(A,n);
cout << "\nma tran chuyen vi: \n";
ChuyenVi(A,n);
return 0;
}
输出:
您输入n,例如n = 3,矩阵:
1 2 3
4 5 6
7 8 9
矩阵的转置将是:
1 4 7
2 5 8
3 6 9
但实际结果是矩阵的转置
1 2 3
4 5 6
7 8 9
答案 0 :(得分:4)
您交换了所有内容两次,因此最终结果与开始时相同。尝试一下,我已经注释了更改的行。
int ChuyenVi(int A[100][100], int n)
{
for(int i=0; i<n; i++)
{
for(int j=0; j<i; j++) // <-- change here
{
DoiGiaTri(A[i][j], A[j][i]);
}
}
XuatMang(A,n);
return 0;
}