Gặp lỗi khi sắp xếp mảng bằng con trỏ

Source code:

void NhapMang(int *a, int n)
{
	for (int i = 0; i < n; i++)
	{
		printf("\nNhap a[%d] = ", i);
		scanf("%d", &a[i]);
	}
}
void Xuatmang(int *a, int n)
{
	for (int i = 0; i < n; i++)
		printf("%5d", a[i]);
}
void HoanVi(int &x, int &y)
{
	int Temp = x;
	x = y;
	y = Temp;
}
void SortArr(int *a, int n, char radix)
{
	for (int i = 0; i < n - 1; i++)
	{
		for (int j = i + 1; j < n; j++)
		{
			if (radix == 't')
			{
				if (a[i] > a[j])
					HoanVi(a[i], a[j]);
			}
			if (radix == 'g')
			{
				if (a[i] < a[j])
					HoanVi(a[i], a[j]);
			}
		}
	}
}
int main()
{
	int *a, n;
	do
	{
		printf("\nNhap so luong phan tu: ");
		scanf("%d", &n);
		if (n < 0)
			printf("\nSo luong phan tu khong hop le\n");
	} while (n < 0);
	a = (int *)calloc(n, sizeof(int *));
	NhapMang(a, n);
	Xuatmang(a, n);
	char radix;
	printf("\nBan muon sap xep mang tang hay giam? ");
	scanf("%c", &radix);
	if (radix == 't')
	{
		printf("\nMang sau khi sap xep tang dan: ");
		SortArr(a, n, radix);
		Xuatmang(a, n);
	}
	else
	{
		printf("\nMang sau khi sap xep giam dan: ");
		SortArr(a, n, radix);
		Xuatmang(a, n);
	}
	free(a);
	getch();
	return 0;
}

Tới bước sắp xếp nó không cho em nhập chỉ số Tăng hay Giảm mà bỏ qua là sao mn ?

This post was flagged by the community and is temporarily hidden.

1 Like

Vũ xem giúp anh thử :slight_smile:

@nguyenchiemminhvu

1 Like

Trong bộ đệm vẫn còn kí tự ‘\n’, bạn thêm dòng rewind(stdin) sau dòng khai báo biến char radix

1 Like

Mình làm được rồi, thanks mọi người nhé :smiley:

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