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