Lỗi code hoán đổi 2 dòng của một ma trận

như tiêu đề ạ, lỗi code hoán đổi 2 dòng của một ma trận
thật ra thì nó cũng k phải lỗi mà nó in ra kết quả không mong muốn, anh chị nào xem giúp em sai ở đâu dc k ạ?
ví dụ
1 2 3
4 5 6
7 8 9
hoán đổi dòng 1 và 2
mong muốn
4 5 6
1 2 3
7 8 9
thực tế
1 2 3
7 8 9
4 5 6
đây là code của em:

#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 << endl;
    }
    return 0;
}
int HoanDoi(int &a, int &b)
{
    int tam=a;
    a=b;
    b=tam;
    return 0;
}
int HoanDoi2Dong(int A[100][100], int &n, int &o, int &p)
{
        for(int i=0; i<n; i++)
        {
            HoanDoi(A[o][i],A[p][i]);
        }
        cout << endl;
        return 0;
}
int main()
{
int A[100][100], n, o, p;
cout << "Moi nhap n: ";
cin >> n;
NhapMang(A,n);
XuatMang(A,n);
cout << "\nNhap vao 2 dong can hoan doi: ";
cin >> o >> p;
cout << "Ma tran sau khi hoan doi: ";
HoanDoi2Dong(A,n,o,p);
XuatMang(A,n);
return 0;
}

Bạn chú ý là dòng đầu tiên, thì chỉ số của nó là 0, dòng thứ 2, chỉ số là 1. Thế nên nếu muốn hoán vị dòng 1 và dòng 2, thì truyền vào phải là 0 và 1. Nếu truyền vào 1 và 2, thì nó sẽ là đổi chỗ dòng 2 và dòng 3.
Good luck

2 Likes

Và thớt bỏ tham chiếu ở hàm hoán đổi dòng nhé.

3 Likes

à, mình hiểu r, aaaaa, cảm ơn bạn <3

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?