墨木 2020-06-03 22:05 采纳率: 0%
浏览 93

结构体数组转换wen'ti

如何将 ReadArray 函数中 new 改在 main 函数中实现
将 ReadArray函数中结构体数组的指针访问改用数组下标访问

#include<iostream>
#include<fstream>
#include<string>
#include<algorithm>
using namespace std;
struct Student
{
    unsigned long long int ID;
    string name;
    bool sex;
    unsigned short int grade[3];
};
Student* ReadArray(int& RecordNum)
{
    ifstream infile("学生成绩表.txt");
    if(infile==0) return 0;
    infile>>RecordNum;
    Student *p=new Student[RecordNum];
    Student *head=p;
    int temp;
    for(int i=0;i<RecordNum;i++)
    {
        infile>>temp;
        infile>>p->ID;
        infile>>p->name;
        infile>>p->sex;
        for(int j=0;j<3;j++)
        {
            infile>>p->grade[j];
        }
        p++;
    }
    infile.close();
    return head;
}
void Show(Student a[],int num)
{
    int sn=1;
    for(int i=0;i<num;i++)
    {
        cout<<" "<<sn++<<" ";
        cout<<a[i].ID<<" "<<a[i].name<<" ";
        if(a[i].sex)cout<<"男"<<" ";
        else        cout<<"女"<<" ";
        for(int j=0;j<3;j++)
            cout<<" "<<a[i].grade[j]<<" ";
        cout<<endl;
    }
}
int cmp(const void *a,const void *b)
{
    return(*(Student*)a).grade[2]-(*(Student*)b).grade[2];
}
bool myGreater(Student&elem1,Student& elem2)
{
    return(elem1.grade[2]>elem2.grade[2]);
}
int main()
{
    int N;
    Student *A=ReadArray(N);
    if(A==0)
    {
        cout<<"文件打开失败!\n";
        return 0;
    }
    cout<<"序号"<<"\t学号"<<"\t   姓名"<<"性别"<<"高数"<<"英语"<<"C++"<<endl;
    Show(A,N);
    qsort(A,N,sizeof(*A),cmp);
    cout<<"用qstor函数对C++成绩排升序:\n";
    Show(A,N);
    sort(A,N+A,myGreater);
    cout<<"用sort函数对C++成绩进行降序:\n";
    Show(A,N);
    delete[]A;
    system("pause");
    return 0;
}
  • 写回答

1条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?