您的位置:首页 > 其它

zoj 2727 List the Books(三级排序 = =水题)

2011-01-19 14:38 761 查看
给书的名字,年份,价格排序。



名字优先级大于年份大于价格。



无语死了都 = =。用sort排序,返回值是0或者1,返回2都不行 = =。这个记住了。



#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
typedef struct{
	char name[85];
	int year,price;
}book;
book b[105];
int cmpname(book a,book b)
{
	if( strcmp(a.name,b.name) == 0 )
		if( a.year == b.year )
			return a.price < b.price;
		else
			return a.year < b.year;
	if( strcmp(a.name,b.name) == -1 )
		return 1;
	else
		return 0;
}
int cmpyear(book a,book b)
{
	if( a.year == b.year )
		if( strcmp(a.name,b.name) == 0 )
			return a.price < b.price;
		else
			return cmpname(a,b);
	return a.year < b.year;
}
int cmpprice(book a,book b)
{
	if( a.price == b.price )
		if( strcmp(a.name,b.name) == 0 )
			return a.year < b.year;
		else
			return cmpname(a,b);
	return a.price < b.price;
}
int main()
{
	int n,i;
	char cmp[10];
	int flag = 0;
	while( scanf("%d",&n)!=EOF && n )
	{
		if( flag ) printf("/n");
		flag = 1;
		for(i=0; i<n; i++)
			scanf("%s %d %d",b[i].name, &b[i].year,&b[i].price);
		scanf("%s",cmp);
		if( strcmp(cmp,"Price") == 0 )
			sort(b,b+n,cmpprice);
		else
			if( strcmp(cmp,"Name") == 0 )
				sort(b,b+n,cmpname);
			else
				sort(b,b+n,cmpyear);
		for(i=0; i<n; i++)
			printf("%s %d %d/n",b[i].name,b[i].year,b[i].price);
	}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: