输出是从您输入的矩阵中打印出矩阵的转置,但我的代码只是打印出您输入的第一个矩阵

时间:2019-01-14 07:37:01

标签: c++

输出是从您输入的矩阵中打印出矩阵的转置,但是我的代码只是打印出您输入的第一个矩阵

它没有显示任何错误,所以我真的不知道该怎么做

#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 

1 个答案:

答案 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;
}