题目描述
编写有界数组模板BoundArray(即检查对数组元素下标引用并在下标越界时终止程序的执行),能够存储各种类型的数据。要求实现对数组进行排序的方法sort,及对数组进行查找的方法search。
输入
第一行先输入t,表示有t个测试用例 从第二行开始输入每个测试用例的数据。 首先输入数据类型, I表示int, D表示double,C表示char,接着输入数组的元素个数 然后输入每个元 最后输入要查找的元素
输出
首先输出从小到大排序的元素 然后输出查找元素的结果,找到则输出下标,下标为排序后的下标,没找到则输出-1
样例输入
2 I 2 1 2 2 D 3 3.5 6.2 2.9 2.1
样例输出
1 2 1 2.9 3.5 6.2 -1
提示
*/
#include <bits/stdc++.h>
using namespace std;
template <class T>
class BoundArray
{
private:
T *array;
int len;
public:
BoundArray(int n)
{
len = n;
array = new T[len];
for (int i = 0; i < len; i++)
{
cin >> array[i];
}
}
void sort()
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
if (array[j] > array[j + 1])
{
swap(array[j], array[j + 1]);
}
}
}
}
void search(T a)
{
int i, flag = 0;
for (int i = 0; i < len; i++)
{
if (array[i] == a)
{
cout << i << endl;
flag = 1;
}
}
if (flag == 0)
{
cout << "-1" << endl;
}
}
void show()
{
for (int i = 0; i < len; i++)
{
cout << array[i] << " ";
}
cout << endl;
}
};
int main()
{
int t, n;
cin >> t;
char c;
while (t--)
{
cin >> c >> n;
switch (c)
{
case 'I':
{
int b;
BoundArray<int> p(n);
cin >> b;
p.sort();
p.show();
p.search(b);
break;
}
case 'D':
{
double b;
BoundArray<double> p(n);
cin >> b;
p.sort();
p.show();
p.search(b);
break;
}
case 'C':
{
char b;
BoundArray<char> p(n);
cin >> b;
p.sort();
p.show();
p.search(b);
break;
}
}
}
return 0;
}
|