用写比较函数的方法,注意返回值是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;
}