mình nhập vào a<b là nó xếp bị lỗi à.
Bài sắp xếp bị lỗi
Trước tiên thì bạn hãy đọc cái này để biết cách post 1 đoạn code lên đây
Sau đó thì hãy suy nghĩ đặt 1 câu hỏi thông minh, bạn quăng code lên với tiên đề không rõ ràng nên chỉnh sửa lại tiên đề và nội dung để người đọc biết lỗi là lỗi chỗ nào? với thông báo lỗi là gì?
Người khác cũng muốn giúp bạn nhưng người ta ngại đọc hết code của bạn để biết nó lỗi chỗ nào và sau đó lại sửa lỗi cho bạn. Thay vì bạn chỉ rõ cho người ta biết là nó lỗi chỗ đó thì có dễ hơn không?
P/S: Nói để rút kim nghiệm thôi chứ không có gì khác
3 Likes
Bạn chưa vét hết các điều kiện có thể xảy ra. Thêm nữa là làm kiểu này thời gian tính toán lâu nên bạn cân nhắc nghĩ ra cách giải tối ưu hơn. Phần xét bạn có thể tham khảo:
//truong hop a<=b<=c
if((a<=b)&&(b<=c)){
printf("gia tri sau khi xep: %d, %d, %d\n",a,b,c);
}
//truong hop a>b, b<=c
else if((a>b)&&(b<=c)){
//doi gia tri a,b
t=a; a=b; b=t;
//so sanh lai b va c;
if(b>c){
t=b; b=c; c=t;
printf("gia tri sau khi xep: %d, %d, %d\n",a,b,c);
}
else{
printf("gia tri sau khi xep: %d, %d, %d\n",a,b,c);
}
}
//truong hop a>b>c
//truong hop nay c la gia tri nho nhat
else if((a>b)&&(b>c)){
//doi cho a, b;
t=a; a=b; b=t;
//sau khi doi thi a<b,b>c
//tiep tuc doi cho b va c
t=b; b=c; c=t;
//luc nay a>b, b<c
//tiep tuc doi cho a va b
t=a; a=b; b=t;
//luc nay thi a<b<c
//in ra
printf("gia tri sau khi xep: %d, %d, %d\n",a,b,c);
}
//truong hop nay la a<=b, b>c
else{
//doi cho b va c
t=b; b=c; c=t;
//luc nay gia tri lon nhat la b duoc dua ra sau cung
//tiep theo la so sanh gia tri a va c
if(a>b){
//doi cho a, c va in ra
t=a; a=b; b=t;
printf("gia tri sau khi xep: %d, %d, %d\n",a,b,c);
}
//a<=c
else{
//in ra
printf("gia tri sau khi xep: %d, %d, %d\n",a,b,c);
}
}
2 Likes
Mình sẽ rút kinh nghiệm. Cảm ơn bạn
1 Like