hdu 2093考试排名

/*
这道题用到了结构体排序
对于sort排序时需要三个参数(排序头,结尾,排序规则)[排序头,结尾)即左闭右开,
对于排序规则默认less()即升序,头文件带有greter()降序排列
在自定义规则时需要两个参数可以理解成两个比较对象
int comp(student&s1,student&s2)
{
if(s1.counts2.count)
{
if(s1.score
s2.score)
return s1.name<s2.name;
return s1.score<s2.score;
}
else
return s1.count>s2.count;
}

还学到了c++中指定输出,需要头文件#include
使用方法在需要指定的前面使用stew(数字)指定长度,left或者right指定对齐方式
eg:
cout<<setw(10)<<left<<a[i].name<<’ ‘<<setw(2)<<right<<a[i].count<<’ '<<setw(4)<<right<<a[i].score<<endl;

这道题还简单的使用了结构体使具有关联的数据存放在一个结构体里面
这样就不需要使用几个数组存放

*/

#include<iostream>
#include<string>
#include<sstream>
#include<algorithm>
#include <iomanip>
using namespace std;
struct student
{
	string name;
	int count;
	int score;
};
int comp(student&s1,student&s2)
{
    if(s1.count==s2.count)
    {
        if(s1.score==s2.score)
            return s1.name<s2.name;
        return s1.score<s2.score;
    }
    else
        return s1.count>s2.count;
}
int main()
{
	int n,m,t,k;
	student a[10005];
	string s;
	k=0;
	cin>>n>>m;
	while(cin>>a[k].name)
	{
	    a[k].score=0;
	    a[k].count=0;
		t=n;
		while(t--)
		{
			cin>>s;
			if(s[0]=='-'||s[0]=='0')
				{
					a[k].count+=0;
					a[k].score+=0;
				}
			else
			{
				int flag=0,ms=0,ms1=0;
				a[k].count+=1;
				for(int i=0;i<s.size();i++)
				{
						if(s[i]>='0'&&s[i]<='9'&&flag==0)
						{
							ms1=ms1*10+(s[i]-'0');
						}
						if(s[i]=='(')
						{
							flag=1;
						}
						if(s[i]>='0'&&s[i]<='9'&&flag==1)
						{
							ms=ms*10+(s[i]-'0');
						}
						if(s[i]==')')
						{
							a[k].score+=ms*m;
						}
				}
				a[k].score+=ms1;
			}
		}
		k++;
	}
	sort(a,a+k,comp);
		for(int i=0;i<k;i++)
            cout<<setw(10)<<left<<a[i].name<<' '<<setw(2)<<right<<a[i].count<<' '<<setw(4)<<right<<a[i].score<<endl;
	return 0;
 }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值