1028

2017-08-21  本文已影响0人  峡迩

#include "stdafx.h"

#include<iostream>
#include<sstream>
#include<string>
#include<vector>
#include<memory>
#include<fstream>
#include<map>
#include<utility>
#include<algorithm>

class Pat_Input
{
public:
    Pat_Input(std::ifstream &f, unsigned cor) { read_file(f, cor); };
    Pat_Input(std::istream &in, unsigned cor) { read_io(in, cor); }
    const std::vector<std::string> get_info()const { return info; }
private:
    std::vector<std::string> info;
    void read_file(std::ifstream &file, unsigned n);
    void read_io(std::istream &in, unsigned n);

};

void Pat_Input::read_file(std::ifstream &file, unsigned n)
{
    std::string tmp;
    for (unsigned i = 0; i < n; ++i)
    {
        try
        {
            std::getline(file, tmp);
            info.push_back(tmp);
        }
        catch (std::exception &err)
        {
            std::cout << err.what();
        }
    }
}
void Pat_Input::read_io(std::istream &in, unsigned n)
{
    std::string tmp;
    std::getline(in, tmp);
    for (unsigned i = 0; i < n; ++i)
    {
        try
        {
            std::getline(in, tmp);
            info.push_back(tmp);
        }
        catch (std::exception &err)
        {
            std::cout << err.what();
        }
    }
}




using namespace std;

class People_Age
{
public:
    People_Age() = default;

    void insert(const string &n, const string &b)
    {
        if (check(b))
            people.insert(pair<string, string>(n, b));
    }
    string get_max()
    {
        list_a();
        return list_age.back();
    }
    string get_min() { list_a(); return list_age.front(); }
    size_t get_count()const { return people.size(); }

private:
    bool check(const string &burn);
    vector<string> list_a();
    map<string, string> people;
    vector<string> list_age;
};

bool People_Age::check(const string &burn)
{
    string now = "2014/09/06";
    string old = "1814/09/06";
    if (burn<old || burn>now)
        return false;
    else
        return true;
}
vector<string> People_Age::list_a()
{
    vector<pair<string, string>> pv(people.begin(), people.end());
    sort(pv.begin(), pv.end(), [](const pair<string, string> &lhs, const pair<string, string> &rhs) {return lhs.second > rhs.second; });
    for (auto &r : pv)
    {
        list_age.push_back(r.first);
    }
    return list_age;
}

int main()
{
    ifstream file("C:\\Users\\winack\\Documents\\Visual Studio 2017\\Projects\\PAT\\test.txt");
    unsigned n;
    cin >> n;
    //Pat_Input tmp(file, n);
    Pat_Input tmp(cin, n);
    auto info = tmp.get_info();

    People_Age ps;

    string name;
    string burn;
    for (auto &r : info)
    {
        istringstream in(r);
        in >> name >> burn;
        ps.insert(name, burn);
    }

    cout << ps.get_count() << " " << ps.get_max() << " " << ps.get_min();

    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读