DLUT C++上机作业(实验六)
来源:互联网 发布:java毕业设计项目 编辑:程序博客网 时间:2024/05/16 06:28
注意,博客所有代码在VS上均能编译通过,codeblocks等编译器可能因为某些变量名无法识别而无法编译。(我的VS上不能用end做变量名就很迷呀)
/************************************************/
(2)有一个交通工具类vehicle,将它作为基类派生小车类car、卡车类truck和轮船类boat,定义这些类并定义一个虚函数用来显示各类信息。
#include<iostream>#include<string>using namespace std;class vehicle{public: virtual void show(){ cout << "vehicle" << endl; } virtual ~vehicle(){}};class car :public vehicle{public: void show();};void car::show(){ cout << "car " << endl;}class truck :public vehicle{public: void show();};void truck::show(){ cout << "truck" << endl;}class boat :public vehicle{public: void show();};void boat :: show(){ cout << "boat" << endl;}int main(){ vehicle v; car c; truck t; boat b; vehicle *p[4]; p[0] = &v; p[1] = &c; p[2] = &t; p[3] = &b; for (int i = 0; i < 4; i++){ p[i]->show(); }}
/******************//*(3)实现下图中的Shape层次结构。每个TwoDimensionalShape类应包括成员函数getArea,以计算二维图形的面积。每个ThreeDimensionalShape类包含成员函数getArea和getVolume,分别计算三维图形的表面积和体积。编写一个程序,使用层次结构中每个具体类的对象的Shape向量指针。程序要打印出向量元素所指的对象。同样,再将所有形状存入向量的循环中,要能判断每个图形到底属于TwoDimensionalShape还是属于ThreeDimenionalShape。如果某个图形是TwoDimensionalShape就显示其面积,如果某个图形是ThreeDimenionalShape,则显示其面积和体积。*/#include<iostream>#include<cmath>#define pi acos(-1.0)using namespace std;class shape{public: virtual double getarea() = 0; virtual void show(){}; virtual void showname(){};};class twoshape:public shape{public: void show(){ cout << getarea() << endl; }};class threeshape:public shape{public: virtual double getvolum() = 0; void show(){ cout << getarea() << endl << getvolum() << endl; }};class square :public twoshape{private: double size;public: square(double sizes) :size(sizes){} double getarea(){ return size*size; } void showname(){ cout << "square" << endl; }};class triangle :public twoshape{private: double a, b, c;public: triangle(double d, double e, double f) :a(d), b(e), c(f){} double getarea(){ double s = (a + b + c) / 2; return s*(s - a)*(s - b)*(s - c); } void showname(){ cout << "truangle" << endl; }};class circle :public twoshape{private: double r;public: circle(double rr) :r(rr){} double getarea(){ return pi*r*r; } void showname(){ cout << "circle" << endl; }};class sphere :public threeshape{private: double r;public: sphere(double rr) :r(rr){} double getarea(){ return pi * 4 * r*r; } double getvolum(){ return pi * 4 / 3 * r*r*r; } void showname(){ cout << "sphere" << endl; }};class cube :public threeshape{private: double a, b, c;public: cube(double d, double e, double f) :a(d), b(e), c(f){} double getarea(){ return 2 * (a*b + b*c + c*a); } double getvolum(){ return a*b*c; } void showname(){ cout << "cube" << endl; }};int main(){ shape*arr[5]; square squ(4); triangle tri(3, 4, 5); circle ci(4); sphere sp(4); cube cub(3, 4, 5); arr[0] = □ arr[1] = &tri; arr[2] = &ci; arr[3] = &sp; arr[4] = &cub; for (int i = 0; i < 5; i++){ arr[i]->showname(); arr[i]->show(); }}
(4)
编写一个程序,先设计一个链表List类,再从链表类派生出一个集合类Set类,再集合类中添加一个记录元素个数的数据项。要求可以实现对集合的插入、删除、查找和显示。
#include<iostream>#include<string>using namespace std;class node{public: node*next; node*front; int x; friend class list;};class list{private: node *head; node*tail; node*temp;public: void add(int); list(); ~list(); void show();};class set :public list{private: node *head, *tail, *temp; int len;public: void add(int); void remove(int); node*find(int); void show(); set::set(); set::~set(); int getnum();};int set::getnum(){ return len;}void set::show(){ node *t = head; while (t){ cout << t->x << " "; t = t->next; } cout << endl;}set::set(){ head = tail = temp = NULL; len = 0;}set::~set(){ while (head){ node*t = head; t = t->next; delete head; head = t; }}void set::add(int x){ temp = new node; temp->x = x; temp->front = NULL; temp->next = NULL; if (!head){ head = tail = temp; len = 1; } else{ node *t = head; len++; while (t){ if (x > tail->x){ tail->next = temp; temp->front = tail; tail = temp; break; } if (t != head) { if (x < t->x){ if (x == t->front->x){ len--; break; } temp->next = t; t->front->next = temp; t->front = temp; break; } } else{ if (x < t->x){ temp->next = t; t->front = temp; head = temp; break; } } t = t->next; } }}list::list(){ head = tail = temp = NULL;}list::~list(){ while (head){ node*t = head; t = t->next; delete head; head = t; }}void list::add(int x){ temp = new node; temp->x = x; temp->next = NULL; if (tail == NULL){ head = tail = temp; } else{ tail->next = temp; tail = temp; }}void list::show(){ node *t = head; while (t){ cout << t->x << " "; t = t->next; } cout << endl;}void set::remove(int x){ node*t = head; bool flag = false; while (t){ if (t->x == x){ flag = true; len--; if (t == head){ t = head->next; delete head; head = t; break; } else{ t->front->next = t->next; delete t; break; } } t = t->next; } if (!flag)cout << "mistake" << endl;}node* set::find(int x){ node*t = head; bool flag = false; while (t){ if (t->x == x){ flag = true; return t; } t = t->next; } if (!flag)cout << "mistake" << endl; return NULL;}int main(){ list lis; lis.add(1); lis.add(2); lis.add(3); lis.show(); set se; for (int i = 0; i < 5; i++){ se.add(i); } se.add(3); se.show(); cout << se.getnum() << endl; se.remove(3); se.show(); node *t = se.find(2); cout << t->x << endl; cout << se.getnum() << endl;}
0 0
- DLUT C++上机作业(实验六)
- DLUT C++上机作业(实验三)
- DLUT C++上机作业(实验四)
- DLUT c++上机作业(实验五)
- DLUT C++上机作业(实验七)
- C++ 第二次上机实验(作业)
- 【web】上机实验六
- 实验六课后作业
- c++第二次上机实验作业
- C++第二次上机实验作业
- C++第三次上机实验作业
- 【JAVA】上机实验三作业
- C++上机作业5实验
- c++(复习)上机实验报告
- c++(复习)上机实验报告2
- C++第二次上机实验其他作业
- C++上机实验2——作业
- c++上机实验3——作业
- JSP 设计教师与学生不同登陆界面
- mysql性能
- Android上常用的几种本地数据存储方式:3、SQLite数据库存储数据
- android 串口开发
- noSQL-redis学习(二)- 数据类型
- DLUT C++上机作业(实验六)
- WordPress提示“在裁剪您的图像时发生了错误”的解决方法
- Android Studio 导入TPshop APP项目常见错误
- 最详细的Log4j使用教程
- 软件测试指南:从入门到精通
- 二叉树的学习
- UML
- 暗黑游戏
- STL里面的五种迭代器