经典指数          
原因
3477
浏览数
0
收藏数
 

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。 输入描述: 输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。 输出描述: 在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。 输入例子: 5John 2001/05/12Tom 1814/09/06Ann 2121/01/30James 1814/09/05Steve 1967/11/20 输出例子: 3 Tom John

     举报   纠错  
 
切换
1 个答案

#include

#include

using namespace std;

struct Person

{

    string name;

    string birthday;

};

bool compare(const Person& s1, const Person& s2)

{

    if (s1.birthday < s2.birthday)

        return true;

    else

        return false;

}

int main()

{

    int N;

    vector man;

    Person temp;

    string compare1 = "2014/09/06";

    string compare2 = "1814/09/06";

    cin >> N;

    for ( int i = 0; i < N; ++i)

    {

        cin >> temp.name >> temp.birthday;

        if (temp.birthday < compare1 && temp.birthday >= compare2)

            man.push_back(temp);

    }

    sort(man.begin(), man.end(), compare);

    cout <

<

    return 0;

}

 
切换
撰写答案