30/09/2018, 19:15

A/c xem giúp e cái ct này của e lỗi chổ nào với ạ

#include<stdio.h>
int n,i,j,a[50],tam;
void nhapmang()
{
	printf("nhap so luong phan tu trong mang:
");
	scanf("%d",&n);
	while(n<1||n>50)
	{
		printf("nhap lai n:
");
		scanf("%d",&n);
	}
	for(i=0;i<n;i++)
	{
		printf("A[%d]",i);
		scanf("%d",&a[i]);
	}
}
void xuatmang()
{
	printf("mang ne ----------->
");
	for(i=0;i<n;i++)
	{
		printf("%5d",a[i]);
	}
}
void sapxep()
{
	for(i=0;i<n;i++)
	{
	   for(j=i+1;j<n;j++)
	   {
	        if(a[i]>a[j])
	        {
	   	        tam=a[i];
	   	        a[i]=a[j];
	   	        tam=a[j];
	        }
       }
    }
	printf("
mang sau khi sap xep:
");
	for(i=0;i<n;i++)
	printf("%5d",a[i]);
}
int main()
{
	nhapmang();
	xuatmang();
	sapxep();
}

cái code cảu em chả hiểu sao khi sắp xếp thì luôn đưa hết mảng về giá trị nhỏ nhất
vd:e nhập vào mảng 9 8 7 6 5
thì sau khi sắp xếp mảng như thế này 5 5 5 5 5

Vu Van Chung viết 21:24 ngày 30/09/2018

Mình không biết giúp được gì không nhưng khi bạn nêu vấn đề, nhất là liên quan đến code thì nên để code trong markdown và hãy viết cho đẹp, dễ nhìn chứ đừng chỉ biết viết cho mình mình xem không thế. Thứ hai nữa là bạn bảo lỗi nhưng không biết bạn lỗi chỗ nào, bạn nên chỉ lỗi cụ thể bạn đang mắc phải là gì và có hình ảnh cụ thể. Không ai rỗi quá đi làm lại từ đầu cho bạn được!

X viết 21:16 ngày 30/09/2018

Sửa lại thế này:

for(i=0; i<n-1; i++){
	for(j=i+1; j<n; j++){
		if(a[i] > a[j]){
			int tam = a[i];
	   	    a[i] = a[j];
	   	    a[j] = tam;
	    }
	}
}
Nguyễn Ngọc Hoài viết 21:17 ngày 30/09/2018

cho e hỏi là cái lệnh này

for(i=0; i<n-1; i++)

em đổi thành

for(i=1; i<n; i++)

được không ạ.

Vu Van Chung viết 21:24 ngày 30/09/2018

Hai hàm đó khác nhau nhé bạn, vì mảng trong C bắt đầu từ 0 chứ ko phải bắt đầu từ 1

X viết 21:15 ngày 30/09/2018

This topic was automatically closed after 12 hours. New replies are no longer allowed.

Bài liên quan
0