北京林业大学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的位置然后将其返回

北京林业大学oj实验题search使用函数模板查找不同数据类型数组中元素是否存在相关推荐

  1. 北京林业大学C语言测试,北京林业大学c语言题库上机题一52411133.doc

    北京林业大学c语言题库上机题一52411133 1.以下正确的叙述是( ). A 输入项可以为一个实型常量,如scanf("%f", 3.5); B 只有格式控制,没有输入项,也能 ...

  2. 北京林业大学OJ系统数据结构编程题目答案

    北京林业大学信息学院OJ系统:BJFUOJ 转载文章:北京林业大学OJ系统数据结构编程题目答案 https://blog.csdn.net/chongyang_/article/details/109 ...

  3. 用指针、子函数的方法去一维数组中所有元素的平均值,并放在a[0]处

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p142 7.1.2 上级实训内容 [实训内容7]用指针.子函数的方法去一维数组中所有元素的平均值,并放 ...

  4. 用子函数的方法求一维数组中所有元素之和

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p142 7.1.2 上级实训内容 [实训内容2]用子函数的方法求一维数组中所有元素之和 #includ ...

  5. html计算一个数组所有元素的和,函数bsxfun,两个数组间元素逐个计算的二值操作...

    转自http://www.cnblogs.com/rong86/p/3559616.html 函数功能:两个数组间元素逐个计算的二值操作 使用方法:C=bsxfun(fun,A,B) 两个数组A合B间 ...

  6. C语言:编写一个函数,计算二维数组中的最大元素,数组以指针的方式传递

    /*编写一个函数,计算二维数组中的最大元素,数组以指针的方式传递*/ #include<stdio.h> #define N 4 #define M 3 int findmax(int ( ...

  7. 按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,m和n的值由用户键盘输入。已知m和n的值都不超过10。

    题目:按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值.其中,m和n的值由用户键盘输入.已知m和n的值都不超过10. void InputArray( ...

  8. 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

    输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分. 我们首先会想到常规方法:创建一个临时数组,遍历所给数组中的所有元素,将偶数 ...

  9. 写一个函数找出一个整数数组中,第二大的数

    题目:写一个函数找出一个整数数组中,第二大的数. 算法分析: 1)假设数组中的前两个元素就是最大和第二大,即max和smax: 2)从数组的第二个元素开始遍历数组,当有元素大于max的时候,将max赋 ...

最新文章

  1. 【Java】使用单向链表实现一个队列(Queue)
  2. 3D模型“换皮肤”有多简单?也就一句话的事
  3. 面试官:请实现一个通用函数把 callback 转成 promise
  4. firefox input file宽度失效
  5. 玩转Mybatis —— 一个小demo,带你快速入门Mybatis
  6. oracle blob update,Oracle数据库中对BLOB数据的操作问题
  7. Matlab Tricks(二十六)—— 置乱(随机化)与恢复(shuffle/permutation restore)
  8. [转载] Python一行代码实现1到100之和
  9. 手机号段对应地区编码_什么是编码器?了解两种类型的编码器
  10. Windows XP刻录机不能刻盘显示函数不正确的解决办法
  11. extjs初学者教程
  12. RBAC模型整合数据权限
  13. matlab代码:基于主从博弈的智能小区代理商定价策略及电动汽车充电管理
  14. FPGA,关于安装使用libero IDE V9.2 及其gold floating license配置
  15. python利用range生成包含1-10的列表_Python列表干货:创建数字列表:range()函数用法...
  16. LTE Paging
  17. 台式计算机用电量是多少,台式计算机的功率是多少?台式计算机多少电量[详细介绍]...
  18. win7瘦身,关闭虚拟内存,页面文件,休眠
  19. Vue+Echarts实现中国地图+各省业务数据分布情况组件
  20. linux ibm 多路径,IBM V7000多路径解决

热门文章

  1. mybatis——.xml映射文件中不同情况下的resultType(记录)
  2. いたずら極悪 +イチャずら+かすたむアイドロイドAi 转区破解+界面汉化补丁
  3. Java:计算平均数
  4. 游戏设计自学记录(25)
  5. matlab的使用问题(—):每次双击.m文件都会自动打开一个matlab程序
  6. 百度快照倒退原因分析及补救措施
  7. 【SwiftUI模块】0013、SwiftUI搭建-类似蚂蚁财富的基金累计盈亏的走势图
  8. margin:auto 与 margin:0 auto 区别
  9. nnunet(四) extending nnunet
  10. 颇为可惜,OPPO和vivo未能从华为身上占便宜