#include<stdio.h>
#include<stdlib.h>
struct book
{
char name[61];
int sell;
int nian;
int yue;
int ri;
int price;
int score;
};
void pai(struct book a[],int n);
void swap(struct book *a,struct book *b);
int main()
{
int n;
scanf("%d",&n);
struct book *a=malloc(sizeof(struct book)*n);//或者: struct book a[n];
for(int i=0;i<n;i++)
{
getchar();
scanf("%s",a[i].name);
scanf("%d%d%d%d%d%d",&a[i].sell,&a[i].nian,&a[i].yue,&a[i].ri,&a[i].price,&a[i].score);
}
pai(a,n);
for(int i=0;i<n;i++)
{
printf("%s %d %d %d %d %d %d\n",a[i].name,a[i].sell,a[i].nian,a[i].yue,a[i].ri,a[i].price,a[i].score);
}
return 0;
}
void pai(struct book a[],int n)
{
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(a[j].price>a[j+1].price)
{swap(&a[j],&a[j+1]);
continue;}
else if(a[j].price<a[j+1].price)
continue;
if(a[j].nian<a[j+1].nian)
{swap(&a[j],&a[j+1]);
continue;}
else if(a[j].nian>a[j+1].nian)
continue;
if((a[j].nian==a[j+1].nian)&&(a[j].yue<a[j+1].yue))
{swap(&a[j],&a[j+1]);
continue;}
else if((a[j].nian==a[j+1].nian)&&(a[j].yue>a[j+1].yue))
continue;
if((a[j].nian==a[j+1].nian)&&(a[j].yue==a[j+1].yue)&&(a[j].ri<a[j+1].ri))
{swap(&a[j],&a[j+1]);
continue;}
else if((a[j].nian==a[j+1].nian)&&(a[j].yue==a[j+1].yue)&&(a[j].ri>a[j+1].ri))
continue;
if(a[j].sell<a[j+1].sell)
{swap(&a[j],&a[j+1]);
continue;}
else if(a[j].sell>a[j+1].sell)
continue;
if(a[j].score<a[j+1].score)
{swap(&a[j],&a[j+1]);
continue;}
}
}
}
void swap(struct book *a,struct book *b)
{
struct book temp;
temp=*b;
*b=*a;
*a=temp;
}
大家都知道在电商网站上买东西时,网站会根据我们的搜索条件给出非常多的商品。这些商品会以依据某一种排序规则进行排序,依次呈现在我们面前。现在某电商网站关于书籍的排序依据有这么几项,综合、销量、出版时间、价格、用户评分。假设综合排名的规则为:首先看价格,价格低的排名靠前,如果价格相同,则看出版时间,出版的晚的排名靠前,如果这两项都相同则看销量,销量大的靠前,如果前三项均相同,最后看用户评分,用户评分高的排名靠前。
请依据此规则写一段给各个书按综合排名的程序。
输入格式:
第一行为一个整数n(1<n<100),后面是n行书籍的数据,共7列,每列之间以空格分隔。其中第一列为书名(长度小于60且仅包含大写字母和小写字母的字符串),第二列到第七列均为大于等于0的整数,分别代表该书的销量、出版时间的年、月、日、价格和用户评分。
输出格式:
n行,每行输出一本书的信息,与输入时格式一致(测试数据中保证没有排名一样的书籍,且所有整数均可以用int存储)。
输入样例:
3
CPrimerPlus 3000 2013 12 6 60 44
ComputerSystemsAProgrammersPerspective 8000 2015 3 12 156 39
TheCProguammingLanguage 50000 1978 2 22 5 46
输出样例:
TheCProguammingLanguage 50000 1978 2 22 5 46
CPrimerPlus 3000 2013 12 6 60 44
ComputerSystemsAProgrammersPerspective 8000 2015 3 12 156 39