Cần giúp đỡ bài tập xuất thông tin sinh viên theo điều kiện

Bài tập là:

Mong mọi người giúp đỡ:

#include <iostream>
#include <string>
using namespace std;
struct HocSinh{
    string sHoten;
    float fDiemtoan;
    float fDiemvan;
    float fDiemTB;
};

void NhapDuLieuHocSinh(HocSinh h[],int n)
{
    for(int i=1;i<=n;i++)
    {
        cin.ignore();
        cout<<"Nhap ho ten hoc sinh: ";
        cin>>h[i].sHoten;
        getline(cin,h[i].sHoten);
        cout<<"Nhap diem toan: ";
        cin>>h[i].fDiemtoan;
        cout<<"Nhap diem van: ";
        cin>>h[i].fDiemvan;
        float dtb=(h[i].fDiemtoan+h[i].fDiemvan)/2;
        h[i].fDiemTB=dtb;
    }
}
void XuatTrungBinh(HocSinh h[],int n)
{
    int tg;
    for(int i=0;i<n-1;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(h[i].fDiemTB> h[j].fDiemTB)
            {
                tg = h[i].fDiemTB;
                h[i].fDiemTB=h[j].fDiemTB;
                h[j].fDiemTB=tg;
            }
        }
    }
    cout<<h[n].sHoten;
    cout<<h[n].fDiemtoan<<"\t"<<h[n].fDiemvan<<"\t"<<h[n].fDiemTB;
}
int main()
{
    int n;
    cout<<"Nhap so hoc sinh: ";
    cin>>n;
    HocSinh h[100];
    NhapDuLieuHocSinh(h,n);
    XuatTrungBinh(h,n);
    return 0;
}

Hàm XuatTrungBinh() bạn sắp xếp đấy à? Mà lại sắp xếp theo kiểu “trộm long tráo phụng” - điểm HS này tráo đổi (swap) cho HS kia. :scream:

Xét 3 yêu cầu thì chắc chắn có dùng đến sắp xếp đấy. Nhưng tráo đổi thì tráo đổi cả HocSinh chứ không phải chỉ là điểm.
Bài này dùng mảng con trỏ thì dễ tráo đổi hơn. Dùng đến malloc() - chắc vậy.

Sau khi nhập xong thì tiến hành sắp xếp trước khi thực hiện 3 yêu cầu. Sắp xếp giảm dần theo điểm trung bình.

  • In ra (các) học sinh có điểm TB cao nhất. Là CÁC học sinh, tức sẽ có vài học sinh có điểm cao nhất và bằng nhau. Mảng đã sắp xếp, các học sinh có điểm cao sẽ nằm ở đầu.
  • 1 vòng lặp và kiểm tra các học sinh nào có họ Nguyễn (không dấu sẽ thành Nguyen) thì in ra. Cần có 1 hàm để tách chuỗi và kiểm tra. Có thể cần đến strtok().
  • In ra mảng đã sắp xếp trước đó.
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?