Chưa hình dung ra được hướng lập trình. Nhờ mọi người giúp đỡ

Em chỉ sửa những ký tự đầu tiên thôi , chứ ko sửa hết họ tên thành Viết Hoa

    //swap
}
``` với cả trong đoạn anh viết bên trên ấy ạ, swap này có tác dụng gì anh ?
E bỏ đi là bị báo lỗi

@Maknae: Giời ạ, //swap là chú thích, mình chú thích vào để bạn tự viết đoạn swap phần tử :expressionless:

1 Like

Cảm ơn mọi người ạ, e là mem mới nên bị hạn chế số lần rep và viết bài, hôm nay mới vào trả lời được !
Cảm ơn anh Đức @Maknae và anh @sueruan012 cũng như anh @rogp10 nhiều ạ !

Anh ơi thế cái chỗ viết hoa của anh Đức với phần sắp xếp sửa lại như nào ạ anh ?

Mình đã hướng dẫn bạn ấy sửa rồi. Bạn tự đọc lại. Vấn đề của bạn ấy là truyền sai biến thôi.
Mình không muốn trở thành spoon-feeder. Mong bạn hiểu.

1 Like
void sapxep(hocsinh a[100], int n)
{
    int i,j;
    hocsinh tg;
    for(i = 0 ; i < n ; i++)
        for( j = i +1; j < n; j ++)
           {
               if(a[i].diemtong < a[j].diemtong)
                {
                    tg = a[j];
                    a[j] = a[i];
                    a[i] = tg;
                }
           }

}

void sapxep1(hocsinh a[100], int n)
{
    int i,j;
    for(i = 0 ; i < n ; i++)
        for( j = i +1; j < n; j ++)
        {
            if(a[i].diemtong == a[j].diemtong)
                a[i].namsinh > a[j].namsinh;
        }
}

e tách thành 2 cái sắp xếp, nhưng vẫn chưa thấy ổn… haizzz
hại não quá

Điều kiện so sánh chỉ có 1 thôi. Bạn tách ra làm 2 cái sắp xếp là sai đấy.
Hình như bạn vẫn chưa hiểu nỗ lực của mình khi mình giải thích đoạn này

Dòng a[i].namsinh > a[j].namsinh; chả có nghĩa lí gì khi bạn viết lửng lơ như thế cả!
Bài này điều kiện chỉ có 1 và duy nhất:

if (a[i].diemtong < a[j].diemtong) { //hiện tại tổng điểm của a[j] (thằng sau) cao hơn a[i] (thằng trước)
    //swap 2 học sinh cho theo thứ tự tổng điểm giảm dần
} else if (a[i].diemtong == a[j].diemtong) {
    //thì xét tiếp đến năm sinh (năm sinh bé hơn thì xếp trước)
    if (a[i].namsinh > a[j].namsinh) {//hiện tại năm sinh của a[i] (thằng trước) đang cao hơn a[j] (thằng sau)
        //swap 2 học sinh cho theo thứ tự năm sinh tăng dần nếu tổng điểm bằng nhau
    }
}
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?