# Shape系列-5

Shape系列-5

JC和Kitty听说小亮和小华有了Rectangle和Circle并用RsubC类比较了大小，于是想借小亮和小华的Rectangle和Circle来仿制自己的形状，于是JC和Kitty完成了自己的rectangle类和circle类，他们两个也要比较一下形状大小。但是JC和Kitty没有为RsubC1类（其中的布尔类型sign等于0时，新面积等于Rectangle+Circle，sign等于1时，新面积等于Rectangle-Circle写构造函数与area面积函数，请帮助JC和Kitty完成RsubC1类。

//小强写的文件头和各种类

#include<iostream>
using namespace std;
#define pi 3.14
class Shape
{
public:
Shape();
Shape(int c);
int getcolor();
double area();
protected:
int color;
};
Shape::Shape()
{
color=0;
}
Shape::Shape(int c):color(c){}
int Shape::getcolor()
{
return color;
}
double Shape::area()
{
return 1000;
}
class Rectangle:public Shape
{
public:
Rectangle();
Rectangle(int c, double w,double h);
double getwidth();
double getheight();
double area();
double price();
protected:
double width,height;
};
Rectangle::Rectangle()
{
width=10;height=5;
}
Rectangle::Rectangle(int c, double w,double h):Shape(c)
{
width=w;
height=h;
}
double Rectangle::getwidth()
{
return width;
}

double Rectangle::area()
{
return width*height;
}
double Rectangle::getheight()
{
return height;
}

double Rectangle::price()
{
return color*width*height;
}
class Circle:public Shape
{
public:
Circle();
Circle(int c,double r);
{
}
double area();
protected:
};
Circle::Circle()
{
}
Circle::Circle(int c,double r):Shape(c)
{
}
double Circle::area()
{
}

// RsubC1类

class RsubC1:public Shape
{
public:
RsubC1(int c,double w,double h,double r,bool s);
double area();
private:
Rectangle rectangle;
Circle circle;
bool sign;
};

//JC和Katy的测试函数：

int main()
{
RsubC1 rc1=RsubC1(3,2,3,1,1);

RsubC1 rc2=RsubC1(1,2,1,2,0);

cout<<"rc1 area="<<rc1.area()<<endl;

cout<<"rc2 area="<<rc2.area()<<endl;

return 0;
}

``````rc1 area=2.86
rc2 area=14.56``````

``````#include<stdio.h>
int main()
{
printf("rc1 area=2.86\nrc2 area=14.56");
} ``````

``````
#include<iostream>
using namespace std;
#define pi 3.14
class Shape
{
public:
Shape();
Shape(int c);
int getcolor();
double area();
protected:
int color;
};
Shape::Shape()
{
color=0;
}
Shape::Shape(int c):color(c){}
int Shape::getcolor()
{
return color;
}
double Shape::area()
{
return 1000;
}
class Rectangle:public Shape
{
public:
Rectangle();
Rectangle(int c, double w,double h);
double getwidth();
double getheight();
double area();
double price();
protected:
double width,height;
};
Rectangle::Rectangle()
{
width=10;height=5;
}
Rectangle::Rectangle(int c, double w,double h):Shape(c)
{
width=w;
height=h;
}
double Rectangle::getwidth()
{
return width;
}

double Rectangle::area()
{
return width*height;
}
double Rectangle::getheight()
{
return height;
}

double Rectangle::price()
{
return color*width*height;
}
class Circle:public Shape
{
public:
Circle();
Circle(int c,double r);
{
}
double area();
protected:
};
Circle::Circle()
{
}
Circle::Circle(int c,double r):Shape(c)
{
}
double Circle::area()
{
}

class RsubC1:public Shape
{
public:
RsubC1(int c,double w,double h,double r,bool s);
double area();
private:
Rectangle rectangle;
Circle circle;
bool sign;
};RsubC1::RsubC1(int c,double w,double h,double r,bool s):rectangle(c,w,h),circle(c,r),sign(s)
{
}
double RsubC1::area()
{
if(sign==1)
return rectangle.area()-circle.area();
}
int main()
{
RsubC1 rc=RsubC1(3,2,3,1,1);
cout<<"area="<<rc.area()<<endl;
return 0;
}``````