北京林业大学oj实验题search
使用模板函数的方法来查找不同数据类型数组中的元素是否存在,若存在则返回该元素下标,若不存在则返回-1
题目:
描述
设计一个模板函数,实现在一个给定的数组中查找给定数据是否存在,如果存在则输出该数据在数组中最小的下标,如果不存在,输出-1。以下为测试函数
输入
int main()
{
int n;
std::cin >> n;
int *nValues = new int[n];
for (int i = 0; i < n; i++)
{
std::cin >> nValues[i];
}
int d;
std::cin >> d;
std::cout << Search(nValues, n, d) << std::endl;
delete[] nValues;
double f;
std::cin >> n;
double *dValues = new double[n];
for (int i = 0; i < n; i++)
{
std::cin >> dValues[i];
}
std::cin >> f;
std::cout << Search(dValues, n, f) << std::endl;
delete[] dValues;
std::cin >> n;
char *cValues = new char[n];
for (int i = 0; i < n; i++)
{
std::cin >> cValues[i];
}
char c;
std::cin >> c;
std::cout << Search(cValues, n, c) << std::endl;
delete[] cValues;
return 0;
}
输入共三组数据,每组数据占三行。
第一组第一行整数n1,第二行是n1个整数,第三行待查找整数n
第二组第一行整数n2,第二行是n2个浮点数,第三行待查找浮点数d
第三组第一行整数n3,第二行是n3个字符,第三行待查找字符c
输出
对于每一组输入,如果查找数据存在,则输出其最小下标(下标从0开始计),否则输出-1。
输入样例 1
7
1 1 2 5 8 10 13
8
5
-1.0 1.1 1.2 1000.10101 8.9
3.5
4
B J F U
j
输出样例 1
4
-1
-1
提示
使用模板函数
template <class T>
int Search(const T * array, int arrayLen, const T & value)
源代码:
#include<iostream>
using namespace std;
template <class T>
int Search(const T* array, int arrayLen, const T& value)
{
int index = -1;
for (int i = 0; i < arrayLen; i++)
{
if (value == array[i])
index = i;
}
return index;
}
int main()
{
int n;
std::cin >> n;
int* nValues = new int[n];
for (int i = 0; i < n; i++)
{
std::cin >> nValues[i];
}
int d;
std::cin >> d;
std::cout << Search(nValues, n, d) << std::endl;
delete[] nValues;
double f;
std::cin >> n;
double* dValues = new double[n];
for (int i = 0; i < n; i++)
{
std::cin >> dValues[i];
}
std::cin >> f;
std::cout << Search(dValues, n, f) << std::endl;
delete[] dValues;
std::cin >> n;
char* cValues = new char[n];
for (int i = 0; i < n; i++)
{
std::cin >> cValues[i];
}
char c;
std::cin >> c;
std::cout << Search(cValues, n, c) << std::endl;
delete[] cValues;
return 0;
}
下面我们来看看这串代码是如何实现数组元素查找的
先从主函数开始我们从主函数的结构可以看出我们要输入三组不同类型的数据,拿其中一组数据来说,首先我们先从键盘输入n它是数组元素的个数,然后用new运算符来定义数组他是动态分配内存的方法
用指针指向我们定义的数组用来储存它,这里我们用new运算符创建了三个数组对象他们分别是:nValue、dValue、cValue,数组创建完毕之后,我们用for循环的方法输入数组,然后我们再从键盘输入第三行数据,它是我们将要查找的元素,需要特别注意的一点是我们在实现函数后要记得使用delete运算符来对我们定义的对象进行清除。下面我们来看一看我们的search 函数的实现
int Search(const T* array, int arrayLen, const T& value)
{
int index = -1;
for (int i = 0; i < arrayLen; i++)
{
if (value == array[i])
index = i;
}
return index;
}
首先我们使用的是模板函数的方法,可以实现对不同数据类型的数组元素进行查找
使用for循环遍历数组,如果数组中存在array[i]与我们输入的第三行数据相等,则将我们需要用index来纪录i的位置然后将其返回