#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; } }
原文:http://blog.csdn.net/jiezhi2013/article/details/23911345