zoukankan      html  css  js  c++  java
  • 题目1023:EXCEL排序

    //都是泪啊,搞了半天,竟然是成绩的数据类型搞成了string,输出测试用例的次数竟然搞成了排序的类别。。。细节决定成败!!!

    题目描述:

    Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。
    对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3
    时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
    输入:
    测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (N<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号。以下有N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,同组测试中没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开。当读到 N=0 时,全部输入结束,相应的结果不要输出。
    输出:
    对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3
    时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
    样例输入:
    3 1
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    4 2
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    000002 James 98
    4 3
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    000002 James 90
    0 0
    样例输出:
    Case 1:
    000001 Zoe 60
    000007 James 85
    000010 Amy 90
    Case 2:
    000010 Amy 90
    000002 James 98
    000007 James 85
    000001 Zoe 60
    Case 3:
    000001 Zoe 60
    000007 James 85
    000002 James 90

    000010 Amy 90

    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<vector>
    using namespace std;
    typedef  struct stuInfo
    {
    	string stuNo;//学号
    	string stuName;//姓名
    	int stuScore;//分数
    }stuInfo;
    bool cmp1(const stuInfo &a,const stuInfo &b)
    {
    	return a.stuNo<b.stuNo;
    }
    bool cmp2(const stuInfo &a,const stuInfo &b)
    {
    	if(a.stuName==b.stuName)
    		return a.stuNo<b.stuNo;
    	return a.stuName<b.stuName;
    }
    bool cmp3(const stuInfo &a,const  stuInfo &b)
    {
    	if(a.stuScore==b.stuScore)
    		return a.stuNo<b.stuNo;
    	return a.stuScore<b.stuScore;
    }
    int main()
    {
    	
    	int n,c;
    	string sno,sname;
    	int sscore;
    	int count=0;
    	while(cin>>n>>c)
    	{
    		if(!n)break;
    		vector<stuInfo>vec;
    		for(int i=0;i<n;i++)
    		{
    			stuInfo st;
    			cin>>sno>>sname>>sscore;
    			st.stuName=sname;
    			st.stuNo=sno;
    			st.stuScore=sscore;
    			vec.push_back(st);
    
    		}
    		vector<stuInfo>::iterator start=vec.begin(),end=vec.end();
    		if(c==1)sort(start,start+n,cmp1);//学号排序
    		else if(c==2)sort(start,start+n,cmp2);//名字排序
    		else if(c==3)sort(start,end,cmp3);//成绩排序
    		cout<<"Case "<<++count<<":
    ";
    		for(;start<end;start++)
    			cout<<(*start).stuNo<<' '<<(*start).stuName<<' '<<(*start).stuScore<<endl;
    	}
    	return 0;
    }


    极简,专注,速度,极致
  • 相关阅读:
    Oracle中有大量的sniped会话
    Error 1130: Host '127.0.0.1' is not allowed to connect to this MySQL server
    汉字转换为拼音以及缩写(javascript)
    高效率随机删除数据(不重复)
    vs2010 舒服背景 优雅字体 配置
    mvc中的ViewData用到webfrom中去
    jquery ajax return值 没有返回 的解决方法
    zShowBox (图片放大展示jquery版 兼容性好)
    动感效果的TAB选项卡 jquery 插件
    loading 加载提示······
  • 原文地址:https://www.cnblogs.com/simplelifestyle/p/3761876.html
Copyright © 2011-2022 走看看