当前位置: 首页 > news >正文

PTA:模拟EXCEL排序

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

输入格式:

输入的第一行包含两个正整数 n (≤105) 和 c,其中 n 是纪录的条数,c 是指定排序的列号。之后有 n 行,每行包含一条学生纪录。每条学生纪录由学号(6 位数字,保证没有重复的学号)、姓名(不超过 8 位且不包含空格的字符串)、成绩([0, 100] 内的整数)组成,相邻属性用 1 个空格隔开。

输出格式:

在 n 行中输出按要求排序后的结果,即:当 c=1 时,按学号递增排序;当 c=2 时,按姓名的非递减字典序排序;当 c=3 时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。

输入样例:

3 1
000007 James 85
000010 Amy 90
000001 Zoe 60

输出样例:

000001 Zoe 60
000007 James 85
000010 Amy 90

 

代码如下:

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;struct Student{string number;string name;int grade;
};bool compareByNumber(const Student& a,const Student& b)
{return a.number<b.number;
}bool compareByName(const Student& a,const Student& b)
{if(a.name==b.name){return a.number<b.number;}return a.name<b.name;
}bool compareByGrade(const Student& a,const Student& b)
{if(a.grade==b.grade){return a.number<b.number;}return a.grade<b.grade;
}void sortStudents(vector<Student>& students,int c)
{if(c==1){sort(students.begin(),students.end(),compareByNumber);}else if(c==2){sort(students.begin(),students.end(),compareByName);}else if(c==3){sort(students.begin(),students.end(),compareByGrade);}
}int main()
{int n,c;cin>>n>>c;vector<Student> students(n);for(int i=0;i<n;i++){cin>>students[i].number>>students[i].name>>students[i].grade;}sortStudents(students,c);for(Student& student:students){cout<<student.number<<" "<<student.name<<" "<<student.grade<<endl;}return 0;
}

学习心得 :

1、StudentA->name - StudentB->name 和 StudentA->number - StudentB->number 这种操作是错误的。name 和 number 是 std::string 类型不能直接进行减法运算。应该使用字符串的比较函数,如 compare 或者直接使用比较运算符(<、> 等)。

相关文章:

  • XCZU7EG‑L1FFVC1156I 赛灵思XilinxFPGA ZynqUltraScale+ MPSoC EG
  • jdk node redis nginx mysql直接部署
  • 性能测试方案设计思路总结
  • ADVB发送器设计
  • api护照查验-GO国内护照查验接口-身份安全卫士
  • 操作教程|通过DataEase制作MaxKB系统数据大屏
  • 【前端】跟着maxkb学习流程图画法
  • 【含文档+PPT+源码】基于微信小程序的非遗文化黄梅戏宣传平台的设计与实现
  • 读书笔记 -- MySQL架构
  • 音视频学习 - ffmpeg 编译与调试
  • webgl入门实例-09索引缓冲区示例
  • 【华为】OSPF震荡引起CPU占用率高怎么解决?
  • SvelteKit 最新中文文档教程(21)—— 最佳实践之图片
  • Python-基于协同过滤的推荐系统详解:从经典方法到前沿技术
  • 使用mybatisPlus自带的分页方法+xml实现数据分页
  • PyTorch:学习 CIFAR-10 分类
  • 25.4.17学习总结
  • 多线程进阶知识篇(二)
  • CSDN创作四载记:我的创作纪念日随笔与感悟
  • SpringBoot整合Thymeleaf模板:构建现代化Web视图层的完整指南
  • 夜读丨喜马拉雅山的背夫
  • 欧盟决意与俄罗斯能源彻底决裂之际,美国谋划新生意:进口俄气对欧转售
  • 视频丨习近平同普京在主观礼台出席红场阅兵式
  • 胖东来发布和田玉、翡翠退货说明:不扣手续费等任何费用
  • 深入贯彻中央八项规定精神学习教育中央第六指导组指导督导中国工商银行见面会召开
  • 新华时评:任凭风云变幻,中俄关系从容前行