问题标题: 酷町堂:1480

0
0
已解决
翟谦瑞
翟谦瑞
新手守护
新手守护
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct paixu{
	string haoma;
	double chengji;
}s[102];
bool cmp(paixu a,paixu b){
	if(a.chengji==b.chengji)
		return a.haoma<b.haoma;
	return a.chengji>b.chengji;
}
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>s[i].haoma>>s[i].chengji;
    sort(s,s+n,cmp);
	cout<<s[m].haoma<<" ";
	printf("%.1f",s[m].chengji);
	return 0;
}

我这里哪儿错了?

翟谦瑞在2018-07-31 10:53:24追加了内容


0
已采纳
梁彦博
梁彦博
初级光能
初级光能

@翟谦瑞 

首先,你的数组定义太小了(要求0<m<=n<10000),

so把s【102】改为s【10020】就可以了!

其次,你要把sort(s,s+n,cmp)改为sort(s+1, s+1+n, cmp)

或者讲输入输出时,i从0开始

采纳者RP,颜值++

0
徐铭凯
徐铭凯
资深守护
资深守护

@翟谦瑞  

你数组下标是从1开始的

sort函数应该是sort(s+1, s+1+n, cmp)

从0开始才是sort(s, s+n, cmp)

0
杨陈卓
杨陈卓
新手天翼
新手天翼

@翟谦瑞

  

}s[102];

小了

应改为

}s[10010];
sort(s, s+n, cmp)

改为

sort(s+1, s+1+n, cmp)

 

0
舒航
舒航
新手守护
新手守护

你的sort下标怎么为0开始???

0
朱智霖
朱智霖
新手守护
新手守护

首先你的sort函数用错了

应该为:sort(s+1, s+1+n, cmp)

其次你的数组定义小了,变大一点

例:a[10010】

0
0
范睿宸
范睿宸
初级守护
初级守护

你的数组定义小了!应该为【10020】

0
周建勋
周建勋
中级光能
中级光能

首先,你的数组定义太小了(要求0<m<=n<10000),

so把s【102】改为s【10020】就可以了!

其次,你要把sort(s,s+n,cmp)改为sort(s+1, s+1+n, cmp)

或者讲输入输出时,i从0开始

采纳者RP,颜值++

我要回答