【问题描述】利用函数模板,实现对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];
如有帮助,望采纳,谢谢。
#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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!