• 1028 List Sorting 排序


    1028 List Sorting (25 分)

    Excel can sort records according to any column. Now you are supposed to imitate this function.

    Input Specification:

    Each input file contains one test case. For each case, the first line contains two integers N (105​​) and C, where N is the number of records and C is the column that you are supposed to sort the records with. Then N lines follow, each contains a record of a student. A student's record consists of his or her distinct ID (a 6-digit number), name (a string with no more than 8 characters without space), and grade (an integer between 0 and 100, inclusive).

    Output Specification:

    For each test case, output the sorting result in N lines. That is, if C = 1 then the records must be sorted in increasing order according to ID's; if C = 2 then the records must be sorted in non-decreasing order according to names; and if C = 3 then the records must be sorted in non-decreasing order according to grades. If there are several students who have the same name or grade, they must be sorted according to their ID's in increasing order.

    Sample Input 1:

    3 1
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    

    Sample Output 1:

    000001 Zoe 60
    000007 James 85
    000010 Amy 90
    

    Sample Input 2:

    4 2
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    000002 James 98
    

    Sample Output 2:

    000010 Amy 90
    000002 James 98
    000007 James 85
    000001 Zoe 60
    

    Sample Input 3:

    4 3
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    000002 James 90
    

    Sample Output 3:

    000001 Zoe 60
    000007 James 85
    000002 James 90
    000010 Amy 90

    思路:
      这个题与其说是考察排序,不如说是考察char数组和string之间的转换,如果使用cin输入会超时
    #include<iostream>
    #include<vector>
    #include<string>
    #include<algorithm>
    #include<stdlib.h>
    using namespace std;
    
    struct Student
    {
        string id;
        string name;
        int score;
    };
    
    bool cmp1(Student&A,Student&B)
    {
        return A.id<B.id;
    }
    
    bool cmp2(Student&A,Student&B)
    {
        return A.name==B.name?A.id<B.id:A.name<B.name;
    }
    
    bool cmp3(Student&A,Student&B)
    {
        return A.score==B.score?A.id<B.id:A.score<B.score;
    }
    
    
    int main()
    {
        int n,c;
        cin>>n>>c;
        Student stu[n];
        for(int i=0; i<n; i++)
        {
            char id[10],name[20];
            scanf("%s%s%d",id,name,&stu[i].score);
            stu[i].id=string(id);
            stu[i].name=string(name);
    
        }
        if(c==1)
        {
            //qsort(stu,n,sizeof(Student),cmp1);
            sort(stu,stu+n,cmp1);
        }
        else if(c==2)
        {
            sort(stu,stu+n,cmp2);
        }
        else
            sort(stu,stu+n,cmp3);
        for(int i=0; i<n; i++)
        {
            printf("%s %s %d
    ",stu[i].id.c_str(),stu[i].name.c_str(),stu[i].score);
            //cout<<stu[i].id<<" "<<stu[i].name<<" "<<stu[i].score<<endl;
    
        }
        return 0;
    }
     
  • 相关阅读:
    电子邮件的工作原理
    常用邮箱服务器地址端口
    wpf \silverlight 保存控件为图片
    GIS理论(墨卡托投影、地理坐标系、地面分辨率、地图比例尺、Bing Maps Tile System)【转载】
    Visifire图表控件官网地址
    Ado方式导入excel混用数据类型引起数据缺失问题解决方法
    c#日期时间的操作
    获得excel的sheet名字
    正则表达式验证可发短信的号码,如手机号和小灵通号码(106+区号+号码)
    验证多行文本框输入长度的正则表达式
  • 原文地址:https://www.cnblogs.com/zhanghaijie/p/10295908.html
Copyright © 2020-2023  润新知