PATA1036题解
Posted dcklm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PATA1036题解相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<vector> #include<algorithm> using namespace std; struct Student{ char name[100]; char id[100]; char gender[1]; int grade; }; bool cmp1(Student st1, Student st2) { return st1.grade < st2.grade; } bool cmp2(Student st1, Student st2) { return st1.grade > st2.grade; } int main () { vector<Student>vec[2]; int N; cin >> N; Student stu; for(int i = 0; i < N; i++) { cin >> stu.name >> stu.gender >> stu.id >> stu.grade; if(stu.gender[0] == ‘F‘) { vec[0].push_back(stu); }else { vec[1].push_back(stu); } } sort(vec[1].begin(),vec[1].end(),cmp1); sort(vec[0].begin(),vec[0].end(),cmp2); /* if(vec[0].size() == 0) { cout << "Absent" << endl; }else { cout << vec[0][0].name << " " << vec[0][0].id<<endl; } if(vec[1].size() == 0) { cout << "Absent" << endl; }else { cout << vec[1][0].name << " " << vec[1][0].id<<endl; } if(vec[1].size() == 0 || vec[0].size() == 0) cout << "NA" << endl; else cout << abs(vec[1][0].grade - vec[0][0].grade); */ if(vec[0].size() == 0 || vec[1].size() == 0) { if(vec[0].size() != 0) { cout << vec[0][0].name << " " << vec[0][0].id<<endl; cout << "Absent" << endl << "NA" << endl; }else if(vec[1].size() != 0) { cout << "Absent" << endl ; cout << vec[1][0].name << " " << vec[1][0].id << endl; cout << "NA" << endl; }else { cout << "Absent" << endl ; cout << "Absent" << endl ; cout << "NA" << endl; } }else { cout << vec[0][0].name << " " << vec[0][0].id<<endl; cout << vec[1][0].name << " " << vec[1][0].id << endl; cout << abs(vec[0][0].grade - vec[1][0].grade) << endl; } }
有两个小问题,第一个最初的时候数组开小了,导致一直不能通过。 第二个是在输出的时候,总想着做好整体判断,这也导致代码逻辑很复杂。因此如果有多行输出的话,可以考虑每一行进行单独判断,就像注释代码一样,这样会简单很多。
以上是关于PATA1036题解的主要内容,如果未能解决你的问题,请参考以下文章