| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3533 人关注过本帖
标题:用同一个函数名对n个数据仅行从小到大排序,数据类型 可以是整形,单精度 ...
只看楼主 加入收藏
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
收藏
已结贴  问题点数:20 回复次数:5 
用同一个函数名对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: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:20 
#include<iostream>
#include<iomanip>
using namespace std;
template<class T>
void Ascending(T s[], int 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=5;
    int a[5], s_f;
    float b[5];
    double c[5];

    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:00
花脸
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
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
float b[x];  不能用变量给数组定义大小。
 for(int i=0;i<a[k];i++)   -->for(int i=0; i<=k; i++);

程序代码:
#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<k; i++)
        cin >> a[i];
    Ascending(a, k);
    for (int i = 0; i<k; i++)
        cout << a[i] << setw(3);
    cout << endl;
    cin.get();
    cin.get();
}
void scanfs1(float a[], int k)
{
    cout << "请输入float型数字:" << endl;
    for (int i = 0; i<k; i++)
        cin >> a[i];
    Ascending(a, k);
    for (int i = 0; i<k; i++)
        cout << a[i] << setw(3);
    cout << endl;
    cin.get();
    cin.get();

}
void scanfs2(double a[], int k)
{
    cout << "请输入double型数字:" << endl;
    for (int i = 0; i<k; i++)
        cin >> a[i];
    Ascending(a, k);
    for (int i = 0; i<k; i++)
        cout << a[i] << setw(3);
    cout << endl;
    cin.get();
    cin.get();
}
int main()
{
    int x;
    int  s_f;
    
    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)
    {
        int *a = new int[x];
        scanfs(a, x);
        delete[] a;
    }
    if (s_f == 2)
    {
        float *b = new float[x];
        scanfs1(b, x);
        delete[] b;
    }
    if (s_f == 3)
    {
        double *c = new double[x];
        scanfs2(c, x);
        delete[] c;
    }
    return 0;
}

早知做人那么辛苦!  当初不应该下凡
2017-09-27 22:09
快速回复:用同一个函数名对n个数据仅行从小到大排序,数据类型 可以是整形, ...
数据加载中...
 
   



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

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