30/09/2018, 20:18

Lỗi code C++, khởi tạo một ma trận!

Mọi người có thể cho mình hỏi code này bị lỗi ở đâu không ?

#include <iostream>
#include <iomanip>
using namespace std;
void nhapmatran(int **a, int *hang, int *cot);
void main()
{
	int **a, hang, cot;
	cout << "Khoi tao ma tran A" << endl;
	nhapmatran(a, &hang, &cot);
	system("pause");
}
void nhapmatran(int **a, int *hang, int *cot)
{
	int i, j;
	cout << "Nhap so hang : ";
	cin >> *hang;
	cout << "Nhap so cot :";
	cin >> *cot;
	a = new int*[*hang];
	for (i = 0; i < *hang; i++)
	{
		a[i] = new int[*cot];
		for (j = 0; j < *cot; j++)
		{
			cout << "Phan tu " << i << j << " = ";
			cin >> a[i][j];
		}
	}
}
Gió viết 22:21 ngày 30/09/2018

Code này sai thuật toán vì sau khi ra khỏi hàm a vẫn là địa chỉ cũ, bạn có thể debug để xem địa chỉ của nó


int nhapmatran(int ***_a,int *dong,int *cot){
    Code của bạn
    *_a=a;
}
...main
nhapmatran(&a,&dong,&cot);
Lê Văn Đức viết 22:33 ngày 30/09/2018

Cảm ơn bạn. Chạy được rồi.

Bài liên quan
0