关闭

excel排序---结构体的排序

标签: c语言
232人阅读 评论(0) 收藏 举报
分类:
                            EXCEL排序

Problem Description
Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。

Input
测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号。以下有 N
行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,同组测试中没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开。当读到 N=0 时,全部输入结束,相应的结果不要输出。

Output
对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3
时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。

Sample Input
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

Sample Output
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 <cstdio>
# include <algorithm>
# include <cstring>
using namespace std;

struct Student{
    int sno;
    char name[15];
    int grade;
};

bool cmp(Student s1,Student s2){

    return s1.sno<s2.sno;

}

bool cmp1(Student s1,Student s2){

    if(strcmp(s1.name,s2.name)==0){
        return s1.sno<s2.sno;
    }
    else  return strcmp(s1.name,s2.name)<0;
}

bool cmp2(Student s1,Student s2){

    if(s1.grade==s2.grade)
        return s1.sno<s2.sno;
    else
        return s1.grade<s2.grade;
}
Student s[100009];
int main(){

    int n,m;

    int i,j;
    int cnt = 0;
    while(scanf("%d%d",&n,&m),n!=0&&m!=0){

        for(i=0;i<n;i++)
            scanf("%d%s%d",&s[i].sno,&s[i].name,&s[i].grade); 

        if(m==1){
            sort(s,s+n,cmp);
        }else if(m==2){
            sort(s,s+n,cmp1);
        }else{
            sort(s,s+n,cmp2);
        }

        printf("Case %d:\n",++cnt);
        for(i=0;i<n;i++)
            printf("%06d %s %d\n",s[i].sno,s[i].name,s[i].grade);

    }

    return 0;
}
0
0
查看评论

(STL自带的排序功能7.1.3)POJ 2379 ACM Rank Table(结构体的排序、初始化)

#include #include #include using namespace std; const int maxn = 1010; struct judge{ int c; int p; int r; int t; }a[maxn]; struct team{ i...
  • caihongshijie6
  • caihongshijie6
  • 2013-11-01 09:41
  • 1200

【结构体】【sort】多重排序

Just look at the code,that's OK; #include #include #include #include using namespace std; struct student { char name[20]; int total; int c...
  • IronCarrot
  • IronCarrot
  • 2016-11-25 02:32
  • 411

结构体简单排序-一级-二级

结构体简单的二级排序 sort 和 qsort. #include #include #include #include using namespace std; typedef struct node { int x,y; }G; int cmp1(const G &a,cons...
  • B08370108
  • B08370108
  • 2015-06-23 10:17
  • 989

平面点排序(结构体写法)

Ø 题目描述 平面上有n个点,坐标均为整数。请按与坐标原点(0,0)距离的远近将所有点排序输出。可以自己写排序函数,也可以用qsort库函数排序。 Ø 考核知识点 结构体的简单运用。 Ø 解题思路 这题既然是结构体专题,那么必须要...
  • Elliot_Alderson
  • Elliot_Alderson
  • 2017-12-03 14:59
  • 160

C++中,自定义结构体vector的排序

<br />C++中当 vector 中的数据类型为基本类型时我们调用std::sort函数很容易实现 vector中数据成员的升序和降序排序,然而当vector中的数据类型为自定义结构体类型时,我们该怎样实现升序与降序排列呢?有两种方法,下面的例子能很好的说明: <br />...
  • aguisy
  • aguisy
  • 2010-08-04 10:04
  • 10137

Hdu 2093(三级结构体排序)

Problem Description C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点。它的功能是怎么实现的呢? 我们做好了题目的解答,提交之后,要么“AC”,要么错误,不管怎样错法,总是给你记上一笔,表明你曾经有过一次错误提交,因而当你一旦提交该题“AC”后,就要与你算一算帐了,...
  • The_Dream_of_Rookie
  • The_Dream_of_Rookie
  • 2015-12-28 08:24
  • 307

STL的list容器如何对结构体进行排序

链表list有自定义的sort排序函数,默认由大到小排序,但是只有能够比较大小的数值类型的内容才可以,如int,float,double等,对于结构体需要自己定义排序函数。 例如: 定义结构体: typedef struct NewTreeElem {   ...
  • master_feng2009
  • master_feng2009
  • 2013-07-24 10:04
  • 2331

1194: 总成绩排序(结构体专题)

Description 有一学生成绩表,包括学号、姓名、3门课程成绩。请按如下规则排序:按总成绩降序排序,若总成绩相同,则按姓名升序排序。 Input 首先输入一个整数n(1 然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示...
  • lvhaoye
  • lvhaoye
  • 2017-08-17 17:43
  • 334

vector的使用,结构体排序

在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。 1 基本操作 (1)头文件#include. (2)创建vector对象,vector vec; (3)尾部插入数字:vec.push_back(a); (4)使用下标访问元素,cout (...
  • u011954647
  • u011954647
  • 2015-11-09 16:43
  • 864

sort和qsort函数对结构体的二级排序

const int N=100010; 结构体: struct POINT{ int x; int y; }; POINT ap[N]; 在c++中结构体不需要用struct POINT 1.qsort 头文件:stdlib ...
  • ssun125
  • ssun125
  • 2012-03-25 20:14
  • 1915
    个人资料
    • 访问:108477次
    • 积分:4070
    • 等级:
    • 排名:第9025名
    • 原创:311篇
    • 转载:22篇
    • 译文:0篇
    • 评论:5条