结构体得运用
#include<iostream>
#include<iterator>
#include<set>
using namespace std;
struct student
{
char name[20];
int Grade;
int Gradeclass;
char leader;
char West;
int Thesis;
int Scholarship;
};
bool operator<(const student& s1,const student& s2)
{
return s1.Scholarship>s2.Scholarship;
}
int Count(student &s)
{ s.Scholarship=0;
if(s.Grade>80&&s.Thesis>=1)
s.Scholarship+=8000;
if(s.Grade>85&&s.Gradeclass>80)
s.Scholarship+=4000;
if(s.Grade>90)
s.Scholarship+=2000;
if(s.Grade>85&&s.West=='Y')
s.Scholarship+=1000;
if(s.Gradeclass>80&&s.leader=='Y')
s.Scholarship+=850;
return s.Scholarship;
}
int main()
{
int N;
cin>>N;
while(N--)
{
int num;
cin>>num;
student s;
set<student>group;
int Total=0;
for(int i=0;i<num;i++)
{
cin>>s.name>>s.Grade>>s.Gradeclass>>s.leader>>s.West>>s.Thesis;
Total+=Count(s);
group.insert(s);
}
set<student>::iterator it=group.begin();
cout<<it->name<<endl<<it->Scholarship<<endl<<Total<<endl;
}
}
在重载输入流得时候出了问题
//istream& operator>>(istream& in,student s)
//{
// in>>s.name>>s.Grade>>s.Gradeclass>>s.leader>>s.West>>s.Thesis;
// return in;
//}
==! 没加引用。。丢人
#include<iostream>
#include<iterator>
#include<set>
using namespace std;
struct student
{
char name[20];
int Grade;
int Gradeclass;
char leader;
char West;
int Thesis;
int Scholarship;
};
istream& operator>>(istream& in,student &s)
{
in>>s.name>>s.Grade>>s.Gradeclass>>s.leader>>s.West>>s.Thesis;
return in;
}
bool operator<(const student& s1,const student& s2)
{
return s1.Scholarship>s2.Scholarship;
}
int Count(student &s)
{ s.Scholarship=0;
if(s.Grade>80&&s.Thesis>=1)
s.Scholarship+=8000;
if(s.Grade>85&&s.Gradeclass>80)
s.Scholarship+=4000;
if(s.Grade>90)
s.Scholarship+=2000;
if(s.Grade>85&&s.West=='Y')
s.Scholarship+=1000;
if(s.Gradeclass>80&&s.leader=='Y')
s.Scholarship+=850;
return s.Scholarship;
}
int main()
{
int N;
cin>>N;
while(N--)
{
int num;
cin>>num;
set<student>group;
int Total=0;
for(int i=0;i<num;i++)
{ student s;
cin>>s;
Total+=Count(s);
group.insert(s);
}
set<student>::iterator it=group.begin();
cout<<it->name<<endl<<it->Scholarship<<endl<<Total<<endl;
}
}