墨木 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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题