用寫比較函數的方法,注意返回值是bool型
#include <iostream>
#include <algorithm>
using namespace std;
struct wupin{
int c;
int w;
double cost;
}wp[20];
//按排列要求寫比較函數 此處降序
bool cmp(wupin a,wupin b)
{
return a.cost>b.cost;
}
int main()
{
int i;
for (i=0;i<3;i++)
{
cin>>wp[i].c>>wp[i].w;
wp[i].cost=wp[i].w/wp[i].c;
}
sort(wp,wp+3,cmp);
for (i=0;i<3;i++)
{
cout<<wp[i].c<<" "<<wp[i].w<<endl;
}
return 0;
}
重載運算符的方法,目前只會用升序orz,要降序的話還是用比較函數吧
#include <iostream>
#include <algorithm>
using namespace std;
struct wupin{
int c;
int w;
double cost;
bool operator< (const wupin &a) const{
return this->cost<a.cost;
}
}wp[20];
int main()
{
int i;
for (i=0;i<3;i++)
{
cin>>wp[i].c>>wp[i].w;
wp[i].cost=wp[i].w/wp[i].c;
}
sort(wp,wp+3);
for (i=0;i<3;i++)
{
cout<<wp[i].c<<" "<<wp[i].w<<endl;
}
return 0;
}