一个简单的C++程序编写问题?求助!!

题目:编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型,要求用重载函数实现。注意要求有函数重载而不是模板来实现啊,多谢啦!... 题目:编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型,要求用重载函数实现。 注意要求有函数重载而不是模板来实现啊 ,多谢啦! 展开
 我来答
fallx
2010-10-09 · TA获得超过5486个赞
知道大有可为答主
回答量:2321
采纳率:73%
帮助的人:730万
展开全部
TMD,有毛病呀??明明一个模板就解决的事,非要重载!!!!!!

给个思路吧:先写好一个,比如整数的,写完通过后再改函数头就是了.排序就简单了,用最笨的冒泡都行.下面举一个int型的例子

void sort(int *a,n)
{
int temp;
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
if(*(a+i)> *(a+j))
{
temp=*(a+i);
*(a+i)=*(a+j);
*(a+j)=temp;
}
} //没有测试过,随手写的.不敢担保100%正确哦

祝好运!
RRFantasy
2010-10-09 · TA获得超过522个赞
知道小有建树答主
回答量:364
采纳率:0%
帮助的人:327万
展开全部
#include<iostream>
#include<cmath>
using namespace std;
int cmpint(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int cmp(const void *a,const void *b)
{
return *(double *)a-*(double *)b;
}
void sort(int *a,int n)
{
qsort(a,n,sizeof(int),cmpint);
}
void sort(float *a,int n)
{
qsort(a,n,sizeof(float),cmpint);
}
void sort(double *a,int n)
{
qsort(a,n,sizeof(double),cmp);
}
int main()
{
int a[]={5,7,3,9,2,6,4,1};
float b[]={1,8,3,6,2,4,5,6};
double c[]={1.0,8.0,3.0,6.0,2.0,4.0,5.8,6.9};
sort(a,8);
sort(b,8);
sort(c,8);
int i;
for(i=0;i<8;i++)cout<<a[i]<<" ";
cout<<endl;
for(i=0;i<8;i++)cout<<b[i]<<" ";
cout<<endl;
for(i=0;i<8;i++)cout<<c[i]<<" ";
cout<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c02d6baa99
2010-10-09 · TA获得超过232个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:203万
展开全部
#define MAX 10
#include <iostream>
using namespace std;
int i=0,j=0;
class Change
{
public:
void swap(int [],int );
void swap(double [],int );
void swap(float [],int );

};

int main()
{

int A1[MAX]={999,111,222,333,444,124,15,11,2,1};
double D1[MAX]={9.99,1.11,2.22,3.33,4.44,1.24,1.5,1.9,0.2,1.78};
float F1[MAX]={8.24f,7.15f,8.0f,99.0f,999.4f,45.5f,45.5f,3.21f,9.36f,7.45f};
Change change;
change.swap(A1,MAX);
change.swap(D1,MAX);
change.swap(F1,MAX);
cout<<"INT类型排序结果:";
for(i=0;i<MAX;i++)
{
cout<<A1[i]<<" ";
}
cout<<"\nDOUBLE类型排序结果:";
for(i=0;i<MAX;i++)
{
cout<<D1[i]<<" ";
}
cout<<"\nFLAOT类型排序结果:";
for(i=0;i<MAX;i++)
{
cout<<F1[i]<<" ";
}

return 0;
}
void Change::swap(int array[],int n)
{
for( i=0;i<n-1;i++ )
{
for( j=0;j<n-1-i;j++)
{
if(array[j]>array[j+1])
{

array[j]= array[j]+ array[j+1];
array[j+1]=array[j]-array[j+1];
array[j]=array[j]-array[j+1];

}
}

}

}
void Change::swap(double array[],int n)
{
for( i=0;i<n-1;i++ )
{
for( j=0;j<n-1-i;j++)
{
if(array[j]>array[j+1])
{
array[j]= array[j]+ array[j+1];
array[j+1]=array[j]-array[j+1];
array[j]=array[j]-array[j+1];
}
}

}

}
void Change::swap(float array[],int n)
{
for( i=0;i<n-1;i++ )
{
for( j=0;j<n-1-i;j++)
{
if(array[j]>array[j+1])
{
array[j]= array[j]+ array[j+1];
array[j+1]=array[j]-array[j+1];
array[j]=array[j]-array[j+1];

}
}

}

}

最常规。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式