PTA 6-1 类的继承和派生

本题实现类的额继承和派生。已经给出相关的数据结构和类的声明,要求实现类的相关函数,为保证比较的结果,所有的数据均以int类型(除了PI取3.14外),程序运行时,输入一个点p的坐标x和y,接着是圆的中心坐标和半径,接着是三角形的三个顶点,程序运行显示圆的面积和周长,点p是否位于园内,三角形的面积和周长,以及p是否位于三角形内。

函数接口定义:

在这里给出了数据结构和类的声明:
#include 
#include 
using namespace std;
const double PI = 3.14;
struct Point{//点的定义
    int x,y;
};
class Shape
{
public:
    int area(){return 0;}//计算图形面积
    int length(){return 0;}//计算图形的周长
    void show(){}//显示相关信息
    bool IsInside(Point p){return false;}//点p是否位于图形内,如果是,返回true
};
class Circle:public Shape{
    Point center;//圆心
    int radius;//半径
public:
    Circle(Point,int);
    int area();
    int length();
    void show();
    bool IsInside(Point p);
};

class TriAngle:public Shape{
    Point a,b,c;//三角形的三个顶点
public:
    TriAngle(Point,Point,Point);
    int area();
    int length();
    void show();
    bool IsInside(Point p);
};

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
int main()
{
    Point p,center,a,b,c;
    int r;
    cin>>p.x>>p.y;
    cin>>center.x>>center.y;
    cin>>r;
    cin>>a.x>>a.y>>b.x>>b.y>>c.x>>c.y;    
    Circle c1(center,r);
    c1.show();
    if(c1.IsInside(p))
        cout<<"p inside circle"<

代码实现如下:

Circle::Circle(Point p1 ,int  r1) //类内函数类外定义记得加类名前缀,此处占位参数,记得补上形参
{
    center=p1;
    radius=r1;
}
 int Circle::area()               //计算面积  
 {
      int area=PI*radius*radius;
      return area;
 }
 int Circle::length()            //计算周长
 {
       int length=2*PI*radius;
       return length;
 }
void Circle::show()
{
    cout<<"Circle:area="<

你可能感兴趣的:(PTA习题解,几何学,数据结构,c++)