某图书销售管理系统需要对图书(Book)进行排序,每一本图书包含书名(bookName)、销量(bookSales)、价格(bookPrice)等属性,要求先按照销量由大到小排序,对于销量相同的图书再按照价格由小到大排序。
输入
每组输入包括两个部分,第一部分为书的数量n,
接下来n行则为n本书的信息。 按顺序输入书名(不超过20个字)、销量、价格。
输出
输出排序后的信息,每个属性用空格隔开
样例输入 Copy
7 C++程序设计 120 25.00 软件工程 96 48.00 高等数学 80 32.50 算法分析与设计 96 54.00 离散数学 96 28.00 计算机网络 96 36.00 操作系统 115 45.00
样例输出 Copy
C++程序设计 120 25.00 操作系统 115 45.00 离散数学 96 28.00 计算机网络 96 36.00 软件工程 96 48.00 算法分析与设计 96 54.00 高等数学 80 32.50
#include<bits/stdc++.h>
using namespace std;
struct node {
string name;
int num;
double pr;
}e[1005];
bool cmp(node x,node y){//排序算法
if(x.num!=y.num)return x.num>y.num;
else return x.pr<y.pr;
}
int main(){
int n;
while(cin>>n){
for(int i=0;i<n;i++){
cin>>e[i].name>>e[i].num>>e[i].pr;
}
sort(e,e+n,cmp);
for(int i=0;i<n;i++){
cout<<e[i].name<<" "<<e[i].num<<" "<<fixed<< setprecision(2)<<e[i].pr<<endl;
//fixed控制小数点后补0,setprecison()控制小数点后几位小数,两位就在括号里面写2
}
}
return 0;
}