回 帖 发 新 帖 刷新版面

主题:我们一起讨论一个具体问题!

有一个问题是这样的:编一个程序,用同一个函数名对5个数据进行从小到大排序,数据类型可以是整型、长整型、浮点型。用重载函数实现。
 我编一个程序,但是运行不对,总是会产生溢出,但是我又无法找出病症所在,所以在这里提出来和大家讨论,小弟是新入门的菜鸟,愿意多听去高手的意见。(附代码)
#include<iostream>
using namespace std;
void sort(int s[])//对整型数据进行排序;
{
    int i,j,temp;
    for(i=0;i<5;i++)
        for(j=0;j<5-i;j++)
            if(s[j]>s[j+1]){ temp=s[j];s[j]=s[j+1];s[j+1]=temp;}
    cout<<"the sorted int statics are:"<<endl;//输出排好序的数据;
    for(i=0;i<5;i++)
    cout<<s[i]<<" ";
    cout<<endl<<endl;

}
void sort(long s[])//对长整型数据进行排序;
{
    int i,j;
    long temp;
    for(i=0;i<5;i++)
        for(j=0;j<5-i;j++)
            if(s[j]>s[j+1]){ temp=s[j];s[j]=s[j+1];s[j+1]=temp;}
    cout<<"the sorted long statics are:"<<endl;//输出排好序的数据;
    for(i=0;i<5;i++)
    cout<<s[i]<<" ";
    cout<<endl<<endl;
}
void sort(float s[])//对浮点型数据进行排序;
{
    int i,j;
    float temp;
    for(i=0;i<5;i++)
        for(j=0;j<5-i;j++)
            if(s[j]>s[j+1]){ temp=s[j];s[j]=s[j+1];s[j+1]=temp;}
    cout<<"the sorted float statics are:"<<endl;//输出排好序的数据
    for(i=0;i<5;i++)
    cout<<s[i]<<" ";
    cout<<endl<<endl;

}
int main()
{
    int a[5];
    cout<<"please input the int statics:"<<endl;
    for(int i=0;i<5;i++)
    {cout<<"int["<<i<<"]=";
     scanf("%d",&a[i]);
    }//输入整型数据’
    long b[5];
    cout<<"please input the long statics:"<<endl;
    for( i=0;i<5;i++)
    {cout<<"long["<<i<<"]=";
     scanf("%d",&b[i]);
    }//输入长整型数据;
    float c[5];
    cout<<"please input the float statics:"<<endl;
    for( i=0;i<5;i++)
    {cout<<"float["<<i<<"]=";
     scanf("%d",&c[i]);
    }//输入浮点型数据

    sort(a);
    sort(b);
    sort(c);
    return 0;
}

回复列表 (共1个回复)

沙发

这样不就行了, 没必要写五个
template< class T, class CmpFunc = less >
void MySort( T * array, int size )
{
    for ( int i = 1; i < size; ++i )
    {
        for ( int j = i-1; j >= 0; --j )
        {
            if ( CmpFunc( array[j+1], array[j] ) )
            {
                T tmp = array[j];
                array[j] = array[j+1];
                array[j+1] = tmp;
            }
            else
                break;
        }
    }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册