| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3535 人关注过本帖
标题:用同一个函数名对n个数据仅行从小到大排序,数据类型 可以是整形,单精度 ...
取消只看楼主 加入收藏
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
收藏
已结贴  问题点数:20 回复次数:3 
用同一个函数名对n个数据仅行从小到大排序,数据类型 可以是整形,单精度型,双精度型。用模板函数实现。
#include<iostream>
#include<iomanip>
using namespace std;
template<class T>
void Ascending(T s[],T n)
{
    T temp;
    for(int j=0;j<n-1;j++)
    {
        for(int i=0;i<n-1-j;i++)
            if(s[i]<s[i+1])
            {
                temp=s[i];
                s[i]=s[i+1];
                s[i+1]=temp;
            }
    }
}
void scanfs(int a[],int k)
{
    cout<<"请输入int型数字:"<<endl;
    for(int i=0;i<a[k];i++)
            cin>>a[i];
        Ascending(a,k);
        for(int i=0;i<a[k];i++)
            cout<<a[i]<<setw(3);
        cout<<endl;
}
void scanfs1(float a[],int k)
{
    cout<<"请输入float型数字:"<<endl;
    for(int i=0;i<a[k];i++)
            cin>>a[i];
        Ascending(a,k);
        for(int i=0;i<a[k];i++)
            cout<<a[i]<<setw(3);
        cout<<endl;
}
void scanfs2(double a[],int k)
{
    cout<<"请输入double型数字:"<<endl;
    for(int i=0;i<a[k];i++)
            cin>>a[i];
        Ascending(a,k);
    for(int i=0;i<a[k];i++)
            cout<<a[i]<<setw(3);
        cout<<endl;
}
int main()
{
    int x;
    int a[x],s_f;
    float b[x];
    double c[x];
    cout<<"            1.int          "<<endl;
    cout<<"            2.float        "<<endl;
    cout<<"            3.double       "<<endl;
    cout<<"请输入你想输入的类型的序号:"<<endl;
    cin>>s_f;
    cout<<"请输入你想输入的数字的个数:"<<endl;
    cin>>x;
    if(s_f==1)
        scanfs(a,x);   
    if(s_f==2)
        scanfs1(b,x);
    if(s_f==3)
        scanfs2(c,x);
    return 0;
}


看不出来哪错了,还请指教、

[此贴子已经被作者于2017-9-27 20:47编辑过]

搜索更多相关主题的帖子: for int i++ cout 输入 
2017-09-27 20:22
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 2楼 炎天
能不指定数组的大小吗?数组的个数有输入者决定。
2017-09-27 21:04
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 2楼 炎天
#include<iostream>
#include<iomanip>
using namespace std;
template<class T,class T1>
void Ascending(T s[],T1 n)
{
    T temp;
    for(int j=0;j<n-1;j++)
    {
        for(int i=0;i<n-1-j;i++)
            if(s[i]<s[i+1])
            {
                temp=s[i];
                s[i]=s[i+1];
                s[i+1]=temp;
            }
    }
}
void scanfs(int a[],int k)
{
    cout<<"请输入int型数字:"<<endl;
    for(int i=0;i<a[k];i++)
            cin>>a[i];
    Ascending(a,k);
    for(int i=0;i<a[k];i++)
        cout<<a[i]<<setw(3);
        cout<<endl;
}
void scanfs1(float a[],int k)
{
    cout<<"请输入float型数字:"<<endl;
    for(int i=0;i<a[k];i++)
            cin>>a[i];
    Ascending(a,k);
    for(int i=0;i<a[k];i++)
        cout<<a[i]<<setw(3);
        cout<<endl;
}
void scanfs2(double a[],int k)
{
    cout<<"请输入double型数字:"<<endl;
    for(int i=0;i<a[k];i++)
            cin>>a[i];
    Ascending(a,k);
    for(int i=0;i<a[k];i++)
            cout<<a[i]<<setw(3);
        cout<<endl;
}
int main()
{
    int x;
    int a[x],s_f;
    float b[x];
    double c[x];
    cout<<"            1.int          "<<endl;
    cout<<"            2.float        "<<endl;
    cout<<"            3.double       "<<endl;
    cout<<"请输入你想输入的类型的序号:"<<endl;
    cin>>s_f;
    cout<<"请输入你想输入的数字的个数:"<<endl;
    cin>>x;
    if(s_f==1)
        scanfs(a,x);   
    if(s_f==2)
        scanfs1(b,x);
    if(s_f==3)
        scanfs2(c,x);
    return 0;
}

我改成这个样子,编译不报错,已进入黑窗口程序就报错,是怎么回事、。。?
2017-09-27 21:07
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
做出来了
2017-09-27 22:07
快速回复:用同一个函数名对n个数据仅行从小到大排序,数据类型 可以是整形, ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017786 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved