01/10/2018, 14:45

Về sử dụng con trỏ và mảng 1 chiều cấp phát động

Tại sao em chạy code này toàn bị break vậy các bác. em k biết vì sao lỗi nữa @@

void NhapMang(int *a, int &n)
{
	do
	{
		printf("Nhap so phan tu cua mang:");
		scanf_s("%d", &n);
	}
	while (n < 1 || n > 10000);
	for (int i = 0; i < n; i++)
	{
		printf("a[%d]=", i);
		scanf_s("%d", &a[i]);
	}
}
void XuatMang(int *a, int n)
{
	printf("
");
	for (int i = 0; i < n; i++)
	{
		printf("%d	", a[i]);
		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	int *a;
	int n=0;
	a = new int;
	NhapMang(a, n);
	XuatMang(a, n);
	delete a;
	return 0;
}
Dark.Hades viết 16:46 ngày 01/10/2018

a = new int;

Sai ở đây nhé.
Bạn cấp phát cho nó 1 ô thì sao mà truy cập được.

Đạt Vũ viết 16:54 ngày 01/10/2018

sửa thế nào hả bác? e sửa thành a=new int[n] cũng không được bác à

Dark.Hades viết 16:47 ngày 01/10/2018

đặt nó vào trong NhapMang

Đạt Vũ viết 16:51 ngày 01/10/2018

void NhapMang(int *a, int &n)
{
do
{
printf(“Nhap so phan tu cua mang:”);
scanf_s("%d", &n);
}
while (n < 1 || n > 10000);
a = new int[n];
for (int i = 0; i < n; i++)
{
printf(“a[%d]=”, i);
scanf_s("%d", &a[i]);
}
}
void XuatMang(int *a, int n)
{
printf("\n");
for (int i = 0; i < n; i++)
{
printf("%d\t", a[i]);

}

}
int _tmain(int argc, _TCHAR* argv[])
{
int n = 0;
int *a=new int[n];
NhapMang(a, n);
XuatMang(a, n);
delete a;
return 0;
}

Kết quả ra toàn giá trị rác bác ơi

Bài liên quan
0