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;
    }
    
} 

有两个小问题,第一个最初的时候数组开小了,导致一直不能通过。 第二个是在输出的时候,总想着做好整体判断,这也导致代码逻辑很复杂。因此如果有多行输出的话,可以考虑每一行进行单独判断,就像注释代码一样,这样会简单很多。

猜你喜欢

转载自www.cnblogs.com/dcklm/p/10348546.html