http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1727

题目大意:

给你书名、出版时间、价格,让你按照一定的顺序排序。。

其中题目会给出优先级最高的,剩下两个按书名优先级>出版时间>价格来排序。

思路:

练习sort重载的。。。

不过sort(book,book+n,cmp_by_name);的重载函数竟然不能用引用。。不然会cp好吧,我习惯写重载<运算符了。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=100+2;
struct Book
{
char name[MAXN];
int year,price;
}book[MAXN]; bool cmp_by_name(Book a,Book b)
{
int k=strcmp(a.name,b.name);
if(k < 0)
return true;
else if(k > 0)
return false; return a.year < b.year || (a.year==b.year && a.price<b.price);
} bool cmp_by_price(Book a,Book b)
{
if(a.price < b.price)
return true;
else if(a.price > b.price)
return false; int k=strcmp(a.name,b.name);
if(k < 0)
return true;
else if(k > 0)
return false; return a.year<b.year;
} bool cmp_by_year(Book a,Book b)
{
if(a.year < b.year)
return true;
else if(a.year > b.year)
return false; int k=strcmp(a.name,b.name);
if(k < 0)
return true;
else if(k > 0)
return false; return a.price<b.price;
}
int main()
{
int n;
int kase=0;
while(~scanf("%d",&n),n)
{
if(kase++)
puts(""); for(int i=0;i<n;i++)
scanf("%s%d%d",book[i].name,&book[i].year,&book[i].price); char cmd[20];
scanf("%s",cmd);
if(strcmp(cmd,"Name")==0)
sort(book,book+n,cmp_by_name);
else if(strcmp(cmd,"Year")==0)
sort(book,book+n,cmp_by_year);
else if(strcmp(cmd,"Price")==0)
sort(book,book+n,cmp_by_price); for(int i=0;i<n;i++)
printf("%s %d %d\n",book[i].name,book[i].year,book[i].price);
}
return 0;
}

最新文章

  1. 动手做第一个Chrome插件
  2. WinXP/Win7/Win8本地用户配置文件迁移至域用户
  3. C#三种判断字符是否为汉字的方法
  4. Linux下安装APache
  5. .netGDI+(转)
  6. openfire+asmack搭建的安卓即时通讯(三) 15.4.9
  7. 使用C#三维图形控件进行曲线曲面分析
  8. hdu 2457(ac自动机+dp)
  9. 注解SpringMVC
  10. 转:Redis作者谈Redis应用场景
  11. 从java8 说起函数式编程
  12. python学习之lambda匿名函数
  13. selenium webdriver缺陷
  14. vs2013 中已经添加了引用,编译还是提示没有添加引用
  15. java数据结构之二叉树的实现
  16. C# NPOI 操作Excel 案例
  17. InputStream和Reader,FileInputStream和 FileReader的区别
  18. Mac下git配置
  19. 055、创建macvlan网络 (2019-03-22 周五)
  20. 780. Reaching Points

热门文章

  1. 设置https验证方式
  2. 搭建 GIT 服务器教程
  3. Java: 数据类型
  4. LuoguP2756 飞行员配对方案问题(最大流)
  5. let---bash中用于计算的工具
  6. pip 更新安装失败解决方法
  7. Input/output subsystem having an integrated advanced programmable interrupt controller for use in a personal computer
  8. cocos2d-x cocoStudioUI编辑器导出文件的使用
  9. 开发,从需求出发 &amp;#183; 之三 春天在哪里
  10. Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一