zoukankan      html  css  js  c++  java
  • EXCEL排序

    题目描述:
        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
    
    
    //九度OnLine,07年浙江1023题目
    //...
    #include <iostream>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    struct Student
    {
    	string ID;
    	string Name;
    	string Grade;
    };
    
    bool Sort_ID(Student stu1, Student stu2)
    {
    	if(stu1.ID != stu2.ID)
    		return (stu1.ID < stu2.ID);
    }
    
    bool Sort_Name(Student stu1, Student stu2)
    {
    	if(stu1.Name != stu2.Name)
    	{
    		return (stu1.Name < stu2.Name);
    	}
    	else 
    		return (stu1.ID < stu2.ID);
    }
    
    bool Sort_Grade(Student stu1, Student stu2)
    {
    	if(stu1.Grade != stu2.Grade)
    	{
    		return (stu1.Grade < stu2.Grade);
    	}
    	else
    		return (stu1.ID < stu2.ID);
    }
    
    int main()
    {
    	int N, C;
    	Student Stu[1000];
    	//freopen("F:\test_data.txt", "r", stdin);
    
    	while(cin>>N>>C && N != 0)
    	{
    		for(int i = 0; i < N; ++i)
    		{
    			cin>>Stu[i].ID>>Stu[i].Name>>Stu[i].Grade;
    		}
    
    		switch(C)
    		{
    		case 1:  { sort(Stu, Stu + N, Sort_ID); break;}
    		case 2:  { sort(Stu, Stu + N, Sort_Name); break;}
    		case 3:  { sort(Stu, Stu + N, Sort_Grade); break;}
    		}
    
    		cout<<"Case "<<C<<":"<<endl;
    		for(int i = 0; i < N; ++i)
    		{
    			cout<<Stu[i].ID<<" "<<Stu[i].Name<<" "<<Stu[i].Grade<<endl;
    		}
    	}
    
    
    
    	return 0;
    }
    


  • 相关阅读:
    TCP /IP协议的理解
    Linux 文件大小跟踪命令
    关于3D旋转的本质
    Unity旋转
    QT解析XML(机械拆装)
    红黑树总结
    EXCEPTIONS
    算数运算符注意事项
    java中常用的转义字符
    常量和数据类型
  • 原文地址:https://www.cnblogs.com/txg198955/p/3999067.html
Copyright © 2011-2022 走看看