李荣强 北京宅急送快运股份有限公司 java  2012年04月08日
怎么把排序函数用一个函数整合一下,但还是可以实现按各数据成员排序
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
const int n=2;
const int m=10;
class student{
private:
int ID,english,math,computer,total;
string name;
string sex;
int chinese;
public:
student(){cout<<"构造函数在执行\n";}
~student(){cout<<"析构函数在执行\n";}
student(student &p);
student &operator=(student&);
void Getinfo();
friend ostream&operator<<(ostream&os,const student &a);
friend istream&operator>>(istream&is,student&a);
void Print(student st[])const;
int FindID(student st[])const;
void FindName(student st[])const;
void SortName(student st[]);
void SortID(student st[],int (*fun)(int a,int b));
void SortTotal(student st[],int (*fun)(int a,int b));
void SortChinese(student st[],int (*fun)(int a,int b));
void SortMath(student st[],int (*fun)(int a,int b));
void SortEnglish(student st[],int (*fun)(int a,int b));
void SortComputer(student st[],int (*fun)(int a,int b));
void swap(student &,student &);
friend bool checki(string str);
};
void student::SortTotal(student st[n],int (*fun)(int a,int b))
{
int i,j,k; student s;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(fun(st[k].total,st[j].total)) {k=j;}
if(k!=i){s.swap(st[i],st[k]);}
}
for(i=0;i<n;i++)
cout<<st[i];
}
void student::SortID(student st[n],int (*fun)(int a,int b)) //fun是一个函数指针,用来选择升序、降序!
{
int i,j,k;
student s;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(fun(st[k].ID,st[j].ID)) {k=j;}
if(k!=i) {s.swap(st[i],st[k]); }
}
for(i=0;i<n;i++)
cout<<st[i];
}//这只是两个排序函数,我想把这些排序函数整合到一个函数中,但还是能实现按各数据成员排序!求建议!求实现方法!
...全文
127 点赞 收藏 4
写回复
4 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告