一个简单的C++程序编写问题?求助!!
题目:编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型,要求用重载函数实现。注意要求有函数重载而不是模板来实现啊,多谢啦!...
题目:编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型,要求用重载函数实现。 注意要求有函数重载而不是模板来实现啊 ,多谢啦!
展开
展开全部
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%正确哦
祝好运!
给个思路吧:先写好一个,比如整数的,写完通过后再改函数头就是了.排序就简单了,用最笨的冒泡都行.下面举一个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%正确哦
祝好运!
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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];
}
}
}
}
最常规。。。
#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];
}
}
}
}
最常规。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询