非常感謝回覆
感恩之
還有一個 sort 問題
我需要的是用 struct 裡面的 score 的值去 sort
我用 sort(s,n,cmp); //排序 出現下列錯誤
no matching function for call to `sort(snd[((unsigned int)((int)n))], int&, bool (&)(int, int))'
我的程式如下 : 該如何修正, --- 多謝
#include <iostream>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct world
{
string name; // 隊名
int score; // 排名時數
} ;
typedef struct world snd; // 定義資料型態名稱--排名
bool cmp(int ca,int cb){
if(ca>cb)return 0;/*0表示要交換*/
return 1;
}
int main(void){
int n;
while( cin >> n ){
if ( n==0 ) { break; }
if ( n<3 || n>100000 ) {break;}
snd s[n];
char name;
int hh=0,mm=0,ss=0,ms=0;
for(int i=0;i<n;i++){
scanf("%s %d:%d:%d.%d",&name,&hh,&mm,&ss,&ms);
s[i].score=hh*3600000+mm*60000+ss*1000+ms;
s[i].name=name;
}
sort(s,n,cmp); //排序
cout<<"LIST START"<<endl;
int k=0;
k=n/3;
for(int i=0;i<k;i++){
cout <<s[i].name<<endl;
}
for(int i=k;i<n;i++){
if ( s[k-1].score == s[i].score ) {
cout <<s[i].name<<endl;
}
}
cout<<"LIST END"<<endl;
}
//system("pause");
return 0;
非常感謝回覆
感恩之
還有一個 sort 問題
我需要的是用 struct 裡面的 score 的值去 sort
我用 sort(s,n,cmp); //排序 出現下列錯誤
no matching function for call to `sort(snd[((unsigned int)((int)n))], int&, bool (&)(int, int))'
我的程式如下 : 該如何修正, --- 多謝
#include
#include
#include
using namespace std;
struct world
{
string name; // 隊名
int score; // 排名時數
} ;
typedef struct world snd; // 定義資料型態名稱--排名
bool cmp(int ca,int cb){
if(ca>cb)return 0;/*0表示要交換*/
return 1;
}
int main(void){
int n;
while( cin >> n ){
if ( n==0 ) { break; }
if ( n<3 || n>100000 ) {break;}
snd s[n];
char name;
int hh=0,mm=0,ss=0,ms=0;
for(int i=0;i
scanf("%s %d:%d:%d.%d",&name,&hh,&mm,&ss,&ms);
s[i].score=hh*3600000+mm*60000+ss*1000+ms;
s[i].name=name;
}
sort(s,n,cmp); //排序
cout<<"LIST START"<
int k=0;
k=n/3;
for(int i=0;i
cout <<
}
for(int i=k;i
if ( s[k-1].score == s[i].score ) {
cout <<
}
}
cout<<"LIST END"<
}
//system("pause");
return 0;
我根據你的說法改下
#include <iostream>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct world
{
string name; // 隊名
int score; // 排名時數
} ;
typedef struct world snd; // 定義資料型態名稱--排名
bool cmp(snd a,snd b){
if(a.score>b.score)return 0;/*0表示要交換*/
return 1;
}
int main(void){
int n;
while( cin >> n ){
if ( n==0 ) { break; }
if ( n<3 || n>100000 ) {break;}
snd s[n];
char name;
int hh=0,mm=0,ss=0,ms=0;
for(int i=0;i<n;i++){
scanf("%s %d:%d:%d.%d",&name,&hh,&mm,&ss,&ms);
s[i].score=hh*3600000+mm*60000+ss*1000+ms;
s[i].name=name;
}
sort(s,s+n,cmp); //排序
cout<<"LIST START"<<endl;
int k=0;
k=n/3;
for(int i=0;i<k;i++){
cout <<s[i].name<<endl;
}
for(int i=k;i<n;i++){
if ( s[k-1].score == s[i].score ) {
cout <<s[i].name<<endl;
}
}
cout<<"LIST END"<<endl;
}
//system("pause");
return 0;
}