30/09/2018, 20:51

hỏi về xếp mảng tăng dần trong C

tình hình là em xếp đúng rồi nhưng không hiểu sau nó vẫn lấy giá trị 0 của phần tử cuối dù em đã trừ cái phần tử đó ra rồi , mong mọi người giúp đỡ

int main(){
	int a[20],i=0,n,e,j;
	do{
		printf("nhap vao gia tri %d:",i+1);
		scanf("%d",&a[i]);
	}while(a[i++]!=0);
	n=i--;
	for(i=n-1;i>=0;i--){
		for(j=0;j<i;j++){
			if(a[j]>=a[j+1]){
				e=a[j];
				a[j]=a[j+1];
				a[j+1]=e;
			}				
		}
	}
	printf("day sau sap xep :");
	for(j=0;j<n;j++){
		printf("%d",a[j]);
	}
	return 0;

}
Gió viết 22:55 ngày 30/09/2018

n=i-- nên viết thành n=i vì i thay đổi hay không cũng không ảnh hươngt vòng for sau
for(i=n-2...

Sáng Béo viết 22:56 ngày 30/09/2018

không hiểu sau nó vẫn lấy giá trị 0 của phần tử cuối dù em đã trừ cái phần tử đó ra rồi

bạn cho n = i-- thì nó chưa trừ phần tử đó ra đâu…
n = i-1 hoặc n = --i thì được.

a[j]>=a[j+1]

với cả ở đây bạn so sánh a[j] với a[j+1] nên vòng for ngoài phải cho i = n-2 thì a[j+1] mới ko lấy phải phần tử a[n] là phần tử 0 kia.

Bài liên quan
0