字符串与数值之间的转换

题目:

输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。

示例:
jack      70
peter     96
Tom       70
smith     67

从高到低  成绩
peter     96
jack      70
Tom       70
smith     67

从低到高

smith     67

jack      70
Tom      70
peter     96

代码:

#include <iostream>
#include <map>
#include <cstring>
#include <string>
#include <vector>
using namespace std;
/*
收藏的原因:关于字符串转化为整数以及整数转为为字符串可见链接https://www.cnblogs.com/txltxl22/p/10540822.html
*/
void Func_1(map<int, vector<string> > mp, vector<string> &ans){
    int i;
    string s;
    vector<string> vs;
    for(map<int, vector<string> >::iterator it=mp.begin(); it!=mp.end(); it++){
        vs = it->second;
        for(i=0; i<vs.size(); i++){
            s = vs[i] + ' ' + to_string(it->first);
            ans.push_back(s);
        }
    }
}
void Func_2(map<int, vector<string> > mp, vector<string> &ans){
    int i;
    string s;
    vector<string> vs;
    for(map<int, vector<string> >::iterator it=mp.begin(); it!=mp.end(); it++){
        vs = it->second;
        for(i=vs.size()-1; i>=0; i--){
            s = vs[i] + ' ' + to_string(it->first);
            ans.insert(ans.begin(), s);
        }
    }
}
int main(){
    int i, n, k, t;
    string s;
    vector<string> ans;
    map<int, vector<string> > mp;
    while(scanf("%d %d", &n, &k) != EOF){
        ans.clear();
        mp.clear();
        for(i=0; i<n; i++){
            cin>>s>>t;
            (mp[t]).push_back(s);
        }
        if(k == 1) Func_1(mp, ans);
        else Func_2(mp, ans);
        for(i=0; i<ans.size(); i++) printf("%s\n", (ans[i]).c_str());
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/heyour/p/12458441.html