Chương trình bị lỗi khi hoán vị dòng trong ma trận

Chào mọi người hiện tại thì mình mới bắt đầu học C++. Mình không biết chương trình hoán vị hai dòng trên ma trận mà mình viết bị sai ở đâu cả. Mong mọi người giúp đỡ :((

#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
void Nhap(float[][100], int&, int&);
void Xuat(float[][100], int, int);
void HoanVi(float&, float&);
void HoanViDong(float[][100], int, int, int, int);

int main()
{
	float a[100][100];
	int m, n;
	int d1, d2;
	Nhap(a, m, n);
	cout << "Ma tran ban dau la: \n";
	Xuat(a, m, n);
	cout << "\nNhap hai dong muon hoan vi: \n";
	cout << "\nMa tran sau khi hoan vi dong la:\n ";
	HoanViDong(a, m, n, d1, d2);
	Xuat(a, d1, d2);
 	return 1;
}

void Nhap(float a[][100], int& m, int& n)
{
	cout << "Nhap so dong: ";
	cin >> m;
	cout << "Nhap so cot: ";
	cin >> n;
	srand(time(NULL));
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			a[i][j] = -100 + rand() / (RAND_MAX / 200.0);
		}
	}
}

void Xuat(float a[][100], int m, int n)
{
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << setw(10) << fixed << setprecision(1) << a[i][j];
		}
		cout << endl;
	}
}

void HoanVi(float& a, float& b)
{
	float temp = a;
	      a = b;
	      b = temp;
}

void HoanViDong(float a[][100], int m, int n, int d1, int d2)
{
	for (int j = 0; j < n; j++)
		HoanVi(a[d1][j], a[d2][j]);
}
  1. Bạn chưa nhập vào giá trị của 2 dòng muốn hoán vị.
  2. Hàm HoanViDong của bạn sai, bạn debug sẽ hiểu, hàm HoanVi của bạn kiểu như HOÁN VỊ MỘT GIÁ TRỊ chứ không phải HOÁN VỊ DÒNG. Ít nhất phải giống vầy: link

Unroll code thớt ra thì có khác gì code bạn đâu.

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