c++运行错误(n个数的排序(利用函数模板)

问题题目描述

【问题描述】利用函数模板,实现对n个数据的由小到大排序。此题要求分别使用5个整型、3个字符串、8个实型三种类型的数据进行测试。
【输入形式】输入占三行。第一行是5个整型;第2行是3个字符串;第3行是8个实型,彼此用空格间隔。
【输出形式】占3行,分别是由小到大排序的n个数,彼此用空格间隔。
【样例输入】5 4 3 2 1
Tuesday Today Tomorrow
1.2 5.6 3.5 6.7 7.8 1.0 9.3 2.4
【样例输出】1 2 3 4 5
Today Tomorrow Tuesday
1.0 1.2 2.4 3.5 5.6 6.7 7.8 9.3

问题相关代码
#include <iostream>
using namespace std;

template <typename T>
void min(int n,T*a)
{
    int i,j;
    T t;
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(*(a+i)>*(a+j)) 
            {
                t=*(a+i);
                *(a+i)=*(a+j);
                *(a+j)=t;    
            }
        }
    }
    for(i=0;i<n;i++)
        {
            cout<<*(a+i)<<" ";
        }
        cout<<endl;
}

int main()
{
    int i;
    int x=5,y=3,z=8;
    int a[5];
    for(i=0;i<x;i++)
    {
        cin>>a[i];
    }
    min(x,a);
    
    string b[3];
    for(i=0;i<y;i++)
    {
        cin>>b[i];
    }
    min(y,b);
    
    float c[8];
    for(i=0;i<z;i++)
    {
        cin>>b[i];
    }
    min(z,c);
    
    return 0;
}

运行结果及报错内容

希冀网提交显示 运行时错误

第49行,cin>>b[i];这里写错了,应该是 cin>>c[i];

img

如有帮助,望采纳,谢谢。

img

#include <iostream>
#include <string>

using namespace std;

template <typename T, int N>
void sort(T (&a)[N])
{
    for (int i = 0; i < N - 1; i++)
        for (int j = 0; j < N - i - 1; j++)
            if (a[j] > a[j + 1])
                swap(a[j], a[j + 1]);
}

template <typename T, int N>
void test()
{
    T a[N];
    for (int i = 0; i < N; i++)
        cin >> a[i];
    sort(a);
    for (int i = 0; i < N; i++)
        cout << a[i] << ' ';
    cout << endl;
}

int main()
{
    test<int, 5>();
    test<string, 3>();
    test<double, 8>();
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632