网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板
第10单元 - 单元作业:OJ编程 - 创建数组类模板
温馨提示:
1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
本单元作业练习创建模板类。
单元作业会涉及冒泡排序、线性查找等算法。如果对排序、查找不熟悉,可以自行baidu或者google
依照学术诚信条款,我保证此作业是本人独立完成的。
题目具体内容参见本章 【第10单元 - 作业说明:【OJ - 创建Array类模板】】
#include <iostream>
#include <vector>
#include <limits> using namespace std; template <typename T>
class Array
{
public:
//2. Array类的构造函数如下:
Array(vector<T> v) {
size_ = v.size();
data_ = static_cast<T*> (new T[size_]);
for (int i = 0; i < size_; i++) {
data_[i] = v[i];
}
} //3. 需编写的Array类的其它三个函数如下:
~Array(); // 析构函数,释放已经申请到的内存
void sort(); // 排序,将数组中所有元素由小到大排序
int seek(T key); // 查找指定的元素key,返回其所在位置(位置编号从0开始); 如果没有找到,则返回 -1 //4. Array类的 display函数如下:
void display() {
int i;
for (i = 0; i < size_; i++) {
cout << data_[i];
if (i != size_ - 1)
cout << " "; // 输出一个空格
}
} private:
//1. Array类有2个私有数据成员:
T* data_; //存放数组中所有元素的内存的首地址
int size_; //数组中元素的数量
}; template<typename T>
Array<T>::~Array()// 析构函数,释放已经申请到的内存
{
delete[]data_;
} template<typename T>
void Array<T>::sort()// 排序,将数组中所有元素由小到大排序
{
for (int i = 0; i < size_ - 1; i++)
{
for (int j = 0; j < size_ - 1 - i; j++)
{
if (data_[j] > data_[j + 1])
{
T temp = data_[j];
data_[j] = data_[j + 1];
data_[j + 1] = temp;
}
}
}
} template<typename T>
int Array<T>::seek(T key)// 查找指定的元素key,返回其所在位置(位置编号从0开始); 如果没有找到,则返回 -1
{
for (int i = 0; i < size_; i++)
{
if (key == data_[i])
{
return i;
}
} return -1;
} int main() {
vector<int> vi;
int ti;
vector<double> vd;
double td;
vector<char> vc;
char tc; while (cin.get() != '\n') {
cin.unget();
cin >> ti;
vi.push_back(ti);
} while (cin.get() != '\n') {
cin.unget();
cin >> td;
vd.push_back(td);
} while (cin >> tc) {
vc.push_back(tc);
} Array<int> ai(vi);
Array<double> ad(vd);
Array<char> ac(vc); cout << ai.seek(10) << endl;
cout << ad.seek(10.0) << endl;
cout << ac.seek('a') << endl; ai.sort();
ad.sort();
ac.sort(); ai.display();
cout << endl;
ad.display();
cout << endl;
ac.display(); // GCC及VC编译器在调试模式下会暂停,便于查看运行结果
#if ( defined(__DEBUG__) || defined(_DEBUG) )
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
#endif
return 0;
}
网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板的更多相关文章
- 网易云课堂_C++程序设计入门(下)_第9单元:白公曾咏牡丹芳,一种鲜妍独“异常”_第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理
第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前 ...
- 网易云课堂_C++程序设计入门(下)_第7单元:出入虽同趣,所向各有宜 – 文件输入和输出_第7单元 - 作业2:编程互评
第7单元 - 作业2:编程互评 查看帮助 返回 提交作业(剩余10天) 完成并提交作业 作业批改 互评训练 互评作业 自评作业 成绩公布 查看成绩 由于在线编程不支持 ...
- 网易云课堂_C++程序设计入门(下)_期末考试_期末考试在线编程题目
期末考试在线编程题目 返回考试 本次考试题目一共两个,在考试期间可以不限制次数地提交 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间 ...
- 网易云课堂_C++程序设计入门(下)_第11单元:工欲善其事必先利其器 - STL简介_第11单元 - 单元作业2:OJ编程 - list 与 deque
第11单元 - 单元作业2:OJ编程 - list 与 deque 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之 ...
- 网易云课堂_C++程序设计入门(下)_第8单元:年年岁岁花相似– 运算符重载_第8单元 - 作业2:OJ编程 - 重载数组下标运算符
第8单元 - 作业2:OJ编程 - 重载数组下标运算符 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提 ...
- 网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库
第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ ...
- 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)
第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...
- 网易云课堂_C++程序设计入门(上)_第1单元:C++概览_第1单元作业 - 写代码 - 互评 (难度:易)
第1单元作业 - 写代码 - 互评 (难度:易) 查看帮助 返回 提交作业(截止时间已过) 完成并提交作业 作业批改 互评训练 互评作业 自评作业 成绩公布 查看成绩 温 ...
- 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)
第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...
随机推荐
- 个人作业4-ALpha项目测试
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 这个作业要求在哪里 https://edu.cnbl ...
- Django的orm练习
models(创建表): class Grade(models.Model): """年级表""" gname=models.CharFie ...
- .NET界面控件DevExpress全新发布v19.1.5|改进Office 2019主题
DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...
- Andrid Studio Gradle sync failed: A problem occurred configuring project ':app' 解决方法
Android Studio中进行Gradle sync 时出现了这个错误,Android Studio 出错提示是 Gradle sync failed: A problem occurred co ...
- 测试网站接口,nginx篇
nginx是反向代理,怎么通过nginx反向代理要测试接口的线上网站呢. 这里自我提供了一个方法,仅供参考!建议不要用于刷接口等非常规的用途,后果会很严重. 首先 用node express创建一个项 ...
- [采坑] VS2015 warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
问题: Visual Studio 2015出现warning C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失. 解决方案: 1. ...
- python 文件定位
tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后. seek(offset [,from])方法改变当前文件的位置.Offset变量表示要移动的字节数.F ...
- C# 时间格式转换
DateTime dd =DateTime.Parse(temp[0]); string aa = dd.ToShortDateString();
- TTTTTTTTTTTTTTTT POJ 2723 楼层里救朋友 2-SAT+二分
Get Luffy Out Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8211 Accepted: 3162 Des ...
- Android 属性动画监听事件与一个菜单的例子
简单监听事件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3 ...