OJ嘻唰唰Shape系列-6
来源:互联网 发布:ipad买哪款好2017知乎 编辑:程序博客网 时间:2024/05/22 14:36
Description
Shape系列终于快完成了,小聪可以歇一下了。但是这个时候JC和Kitty把自己的矩形和圆形做好,想给小聪比试一下,小聪也不示弱,拿出来自己的做出的三角形和他们一分高下。他们的比较方式是新建了一个MyShape类来进行比较,请帮小聪完成MyShape类的构造函数,area与price函数(price函数的作用是计算面积与color的乘积)。注:MyShape类数据成员sign有三个值1、2、3,它们在price函数中决定color的叠加。蓝色为color,红色为color+1,紫色为color+2
sign为1 时 sign为2 时 sign为3时
Input
无
Output
输出小聪测试的MyShape类的area与price的值。
Sample Output
MyShape1 area:7.14MyShape1 price:14.42MyShape2 area:7.14MyShape2 price:10.28MyShape3 area:7.14MyShape3 price:7.14
代码:
#include<iostream>using namespace std;#define PI 3.14class Shape{public: Shape(int c);protected: int color;};Shape::Shape(int c){ color=c;}class Rectangle:virtual public Shape{public: Rectangle(int c,double w,double h);protected: double width,height;};Rectangle::Rectangle(int c,double w,double h):Shape(c){ width=w; height=h;}class Triangle: virtual public Shape{public: Triangle(int c,double b,double h);protected: double base,height;};Triangle::Triangle(int c,double b,double h):Shape(c){ base=b; height=h;}class Circle:virtual public Shape{public: Circle(int c,double r);protected: double radius;};Circle::Circle(int c,double r):Shape(c){ radius=r;}class MyShape:public Rectangle, public Triangle, public Circle{public: MyShape(int c, double w,double h,double b,double h1,double r,double s); double area(); double price();private: int sign;};MyShape::MyShape(int c, double w,double h,double b,double h1,double r,double s):Shape(c),Rectangle(c,w,h),Triangle(c,b,h1),Circle(c,r),sign(s){}double MyShape::area(){ double area; area=width*Rectangle::height+base*Triangle::height/2+PI*radius*radius; return area;}double MyShape::price(){ double price; if(sign==1) price=area()*color; if(sign==2) price=area()*color+PI*radius*radius; if(sign==3) price=area()*color+base*Triangle::height/2+2*PI*radius*radius; return price;}int main(){ MyShape ms1=MyShape(1,1,3,1,2,1,3); MyShape ms2=MyShape(1,1,3,1,2,1,2); MyShape ms3=MyShape(1,1,3,1,2,1,1); cout<<"MyShape1 area:"<<ms1.area()<<endl; cout<<"MyShape1 price:"<<ms1.price()<<endl; cout<<"MyShape2 area:"<<ms2.area()<<endl; cout<<"MyShape2 price:"<<ms2.price()<<endl; cout<<"MyShape3 area:"<<ms3.area()<<endl; cout<<"MyShape3 price:"<<ms3.price()<<endl; return 0;}
运行结果:
学习心得:
感觉写这道题最大的问题就是对题意的理解出现了偏差,导致自己费了好长时间,最后运行结果还不对。
0 0
- OJ嘻唰唰Shape系列-6
- OJ嘻唰唰 Shape系列-4
- OJ嘻唰唰 类模板
- OJ嘻唰唰 我想放假
- OJ嘻唰唰抽象一个形状类
- OJ 嘻唰唰抽象基类
- OJ 嘻唰唰 类的应用
- OJ嘻唰唰之改错题(6)-虚拟继承(虚基类)沙发床
- OJ嘻唰唰第一批之友元输出时间日期
- OJ嘻唰唰第二批之成绩统计
- 6.22 输出日期时间--友元类 oj 嘻唰唰 1
- OJ嘻唰唰 学生信息的输入与输出
- OJ嘻唰唰之改错题(4)-C++继承
- OJ嘻唰唰虚函数-计算图形面积
- OJ Shape
- OJ 嘻唰唰:熟悉题型——填空题(删除线性表节点)
- 6.22 输出日期时间--友元函数 嘻唰唰 oj 1
- 6.27 嘻唰唰 oj 运算符重载 +—*/ y与上一篇区别
- qt 已解决
- CentOS环境DRBD的编译安装
- 如何解决浏览器兼容性问题
- linux sed命令详解
- MYSQL隔离级别及测试包括脏读,幻读
- OJ嘻唰唰Shape系列-6
- 小数处理,四舍五入
- List的遍历有三种方式及具体用法
- 有道词典Demo(WebView)
- MySQL学习笔记(二):内连接和外连接实现多表查询
- MySQL数据库表名、列名、别名区分大小写的问题及解决
- iOS 网络编程 AFN 上传文件
- SQLServer與Oracle的區別
- CentOs7安装Hadoop2.7.0总结