#include<bits/stdc++.h> using namespace std; struct add { char a[9]; int b; int c; }s[10010]; bool cmp1(add x,add,y) { return x.b>y.b; } bool cmp2(add x,add,y) { return x.c>y.c; } int main() { int n; cin>>n; for(int i=0;i<n;i++) { cin>>s[i].a>>s[i].b>>s[i].c; } sort(s,s+n,cmp1); cout<<s[0].a<<" "<<s[0].b<<endl; sort(s,s+n,cmp2); cout<<s[0].a<<" "<<s[0].c<<endl; return 0; }改错
时间: 2024-01-26 18:04:09 浏览: 68
有两处错误:
1. 在 `bool cmp1(add x,add,y)` 和 `bool cmp2(add x,add,y)` 函数的定义中,逗号应该是一个点号,即应该是 `bool cmp1(add x, add y)` 和 `bool cmp2(add x, add y)`。
2. 在 `bool cmp1(add x,add y)` 和 `bool cmp2(add x,add y)` 中,应该使用结构体成员变量来进行比较,而不是直接比较结构体本身。正确的代码如下:
```c++
bool cmp1(add x, add y) {
return x.b > y.b;
}
bool cmp2(add x, add y) {
return x.c > y.c;
}
```
修改后的代码如下:
```c++
#include<bits/stdc++.h>
using namespace std;
struct add {
char a[9];
int b;
int c;
} s[10010];
bool cmp1(add x, add y) {
return x.b > y.b;
}
bool cmp2(add x, add y) {
return x.c > y.c;
}
int main() {
int n;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> s[i].a >> s[i].b >> s[i].c;
}
sort(s, s + n, cmp1);
cout << s[0].a << " " << s[0].b << endl;
sort(s, s + n, cmp2);
cout << s[0].a << " " << s[0].c << endl;
return 0;
}
```