第10单元 - 单元作业:OJ编程 - 创建数组类模板

查看帮助

返回
 

温馨提示:

1.本次作业属于Online Judge题目,提交后由系统即时判分。

2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。

本单元作业练习创建模板类。
单元作业会涉及冒泡排序、线性查找等算法。如果对排序、查找不熟悉,可以自行baidu或者google

依照学术诚信条款,我保证此作业是本人独立完成的。

1
编写一个数组类模板 Array,能够存储不同类型的数组元素、对数组元素进行查找、排序(5分)
时间限制:500ms内存限制:32000kb
  1. #include <iostream>
  2. #include <vector>
  3. #include <limits>
  4.  
  5. using namespace std;
  6.  
  7. template <typename T>
  8. class Array
  9. {
  10. public:
  11. //2. Array类的构造函数如下:
  12. Array(vector<T> v) {
  13. size_ = v.size();
  14. data_ = static_cast<T*> (new T[size_]);
  15. for (int i = 0; i < size_; i++) {
  16. data_[i] = v[i];
  17. }
  18. }
  19.  
  20. //3. 需编写的Array类的其它三个函数如下:
  21. ~Array(); // 析构函数,释放已经申请到的内存
  22. void sort(); // 排序,将数组中所有元素由小到大排序
  23. int seek(T key); // 查找指定的元素key,返回其所在位置(位置编号从0开始); 如果没有找到,则返回 -1
  24.  
  25. //4. Array类的 display函数如下:
  26. void display() {
  27. int i;
  28. for (i = 0; i < size_; i++) {
  29. cout << data_[i];
  30. if (i != size_ - 1)
  31. cout << " "; // 输出一个空格
  32. }
  33. }
  34.  
  35. private:
  36. //1. Array类有2个私有数据成员:
  37. T* data_; //存放数组中所有元素的内存的首地址
  38. int size_; //数组中元素的数量
  39. };
  40.  
  41. template<typename T>
  42. Array<T>::~Array()// 析构函数,释放已经申请到的内存
  43. {
  44. delete[]data_;
  45. }
  46.  
  47. template<typename T>
  48. void Array<T>::sort()// 排序,将数组中所有元素由小到大排序
  49. {
  50. for (int i = 0; i < size_ - 1; i++)
  51. {
  52. for (int j = 0; j < size_ - 1 - i; j++)
  53. {
  54. if (data_[j] > data_[j + 1])
  55. {
  56. T temp = data_[j];
  57. data_[j] = data_[j + 1];
  58. data_[j + 1] = temp;
  59. }
  60. }
  61. }
  62. }
  63.  
  64. template<typename T>
  65. int Array<T>::seek(T key)// 查找指定的元素key,返回其所在位置(位置编号从0开始); 如果没有找到,则返回 -1
  66. {
  67. for (int i = 0; i < size_; i++)
  68. {
  69. if (key == data_[i])
  70. {
  71. return i;
  72. }
  73. }
  74.  
  75. return -1;
  76. }
  77.  
  78. int main() {
  79. vector<int> vi;
  80. int ti;
  81. vector<double> vd;
  82. double td;
  83. vector<char> vc;
  84. char tc;
  85.  
  86. while (cin.get() != '\n') {
  87. cin.unget();
  88. cin >> ti;
  89. vi.push_back(ti);
  90. }
  91.  
  92. while (cin.get() != '\n') {
  93. cin.unget();
  94. cin >> td;
  95. vd.push_back(td);
  96. }
  97.  
  98. while (cin >> tc) {
  99. vc.push_back(tc);
  100. }
  101.  
  102. Array<int> ai(vi);
  103. Array<double> ad(vd);
  104. Array<char> ac(vc);
  105.  
  106. cout << ai.seek(10) << endl;
  107. cout << ad.seek(10.0) << endl;
  108. cout << ac.seek('a') << endl;
  109.  
  110. ai.sort();
  111. ad.sort();
  112. ac.sort();
  113.  
  114. ai.display();
  115. cout << endl;
  116. ad.display();
  117. cout << endl;
  118. ac.display();
  119.  
  120. // GCC及VC编译器在调试模式下会暂停,便于查看运行结果
  121. #if ( defined(__DEBUG__) || defined(_DEBUG) )
  122. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  123. cin.get();
  124. #endif
  125. return 0;
  126. }

网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板的更多相关文章

  1. 网易云课堂_C++程序设计入门(下)_第9单元:白公曾咏牡丹芳,一种鲜妍独“异常”_第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理

    第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前 ...

  2. 网易云课堂_C++程序设计入门(下)_第7单元:出入虽同趣,所向各有宜 – 文件输入和输出_第7单元 - 作业2:编程互评

    第7单元 - 作业2:编程互评 查看帮助 返回   提交作业(剩余10天) 完成并提交作业     作业批改 互评训练   互评作业   自评作业     成绩公布 查看成绩   由于在线编程不支持 ...

  3. 网易云课堂_C++程序设计入门(下)_期末考试_期末考试在线编程题目

    期末考试在线编程题目 返回考试   本次考试题目一共两个,在考试期间可以不限制次数地提交 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间 ...

  4. 网易云课堂_C++程序设计入门(下)_第11单元:工欲善其事必先利其器 - STL简介_第11单元 - 单元作业2:OJ编程 - list 与 deque

    第11单元 - 单元作业2:OJ编程 - list 与 deque 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之 ...

  5. 网易云课堂_C++程序设计入门(下)_第8单元:年年岁岁花相似– 运算符重载_第8单元 - 作业2:OJ编程 - 重载数组下标运算符

    第8单元 - 作业2:OJ编程 - 重载数组下标运算符 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提 ...

  6. 网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库

    第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ ...

  7. 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)

    第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...

  8. 网易云课堂_C++程序设计入门(上)_第1单元:C++概览_第1单元作业 - 写代码 - 互评 (难度:易)

    第1单元作业 - 写代码 - 互评 (难度:易) 查看帮助 返回   提交作业(截止时间已过) 完成并提交作业     作业批改 互评训练   互评作业   自评作业     成绩公布 查看成绩 温 ...

  9. 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)

    第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...

随机推荐

  1. 架构师成长之路5.5-Saltstack配置管理(状态间关系)

    点击架构师成长之路 架构师成长之路5.5-Saltstack配置管理(状态间关系) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FUNC ...

  2. 001-CentOS 7系统搭建Rsyslog+LogAnalyzer解决交换机日志收

    日志功能对于操作系统是相当重要的,在使用中,无论是系统还是应用等等,出了任何问题,我们首先想到的便是分析日志,查找问题原因.自 CentOS 7 开始,我们的 CentOS 便开始使用 rsyslog ...

  3. 01-spring框架——spring概述

    Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,它是为了解决企业应用开发的复杂性而创建的.Spring 的核心是控制反转(IoC)和面向切面编程(AOP).Spring 是可以 ...

  4. Hdu第八场 树形dp+基环树

    Card Game 每个牌背面的数字朝正面的数字连一条有向边 则题目变为问你最少翻转多少次 能使得每个数字的入度不超过1 首先判断图中每个连通块是不是树或者基环树 因为只有树或者基环树能使得每个点的入 ...

  5. Kendo UI for jQuery使用教程:初始化jQuery插件

    [Kendo UI for jQuery最新试用版下载] Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support ...

  6. 【LuoguP5328】[ZJOI2019]浙江省选

    题目链接 题意 给你一堆斜率和纵截距都为正的直线 ,求对于一个条直线是否存在一个 x 使得在这条直线在 x 处能是前 m 大,输出最高能够达到的排名(排名定义为在 x 处严格大于自己的直线条数+1) ...

  7. 浮点数的存储、类型转换知识点(面宝P34)

    以float a=1.0f为例: (int)a实际上是以浮点数a为参数构造了一个整型数,该整数的值是1: (int&)a则是告诉编译器将a当作整数看(并没有做任何实质上的转换),即读a的内存时 ...

  8. http的get与post

    1.http请求 http有两种报文,请求报文 (发送请求,可能包含数据)和响应报文(服务器响应请求获取数据).一个http请求报文由请求行,请求头部,空行和请求正文(数据)四个部分组成. HTTP请 ...

  9. 图片url 设置大小

    假设有一个图片url为:http://localhost/PictureUrl/ImgURL.aspx?PicUrl=.//testImg\test.jpg (文件夹testImg下有个文件test. ...

  10. 如何下载Direct3D9Ex

    其实就是DirectX june_10月版本,下载链接如下 DirectX Software Development Kit 错误:安装报错“S1023" 若要解决此问题,必须在安装2010 ...