第11周任务

#include <iostream>
using namespace std;
class Point
{
public:
      Point(double x=0,double y=0);//初始化点坐标为(0,0)
      double getX()const
      {
          return x;
      }
      double getY()const
      {
          return y;
      }
      void setPoint(double,double);
      friend ostream & operator<<(ostream &,const Point &);
protected:
      double x,y;
};
Point::Point(double a,double b)
{
   x=a;
   y=b;
}
void Point::setPoint(double a,double b)
{
    x=a;
    y=b;
}
ostream & operator<<(ostream &output,const Point &p)
{
    output<<"point:["<<p.x<<","<<p.y<<"]"<<endl;
    return output;
}
class Circle:public Point
{
public:
    Circle(double x=0,double y=0,double r=0);
    void setRadius(double);
    double getRadius()const ;
    double area()const;
    friend ostream & operator<<(ostream &,const Circle &);
protected:
    double radius;
};
Circle::Circle(double a,double b,double r):Point(a,b),radius(r){}
void Circle::setRadius(double r)
{
    radius=r;
}
double Circle::getRadius()const
{
    return radius;
}
double Circle::area()const
{
    return 3.14159*radius*radius;
}
ostream & operator<<(ostream &output,const Circle &c)
{
   output<<"center=["<<c.x<<","<<c.y<<"],r="<<c.getRadius()<<",area="<<c.area()<<endl;
   return output;
}
class Cylinder:public Circle
{
public:
    Cylinder(double x=0,double y=0,double r=0,double h=0);
    void setHeight(double);
    double getHeight()const;
    double area()const;
    double volume()const;
    friend ostream & operator<<(ostream &,const Cylinder &);
protected:
    double height;
};
Cylinder::Cylinder(double a,double b,double r,double h):Circle(a,b,r),height(h){}
void Cylinder::setHeight(double h)
{
    height=h;
}
double Cylinder::getHeight()const
{
    return height;
}
double Cylinder::area()const
{
    return 2*Circle::area()+2*3.14159*radius*height;//求面积借用Circle的成员函数area的方式为Circle::area()
}
double Cylinder::volume()const
{
   return Circle::area()*height;
}
ostream & operator<<(ostream &output,const Cylinder &cy)
{
    output<<"center=["<<cy.x<<","<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height<<",area="<<cy.area()<<",volume="<<cy.volume()<<endl;
    return output;
}
int main()
{
  Point p(3.5,6.4);
  cout<<"x="<<p.getX( )<<",y="<<p.getY( )<<endl;
  p.setPoint(8.5,6.8);
  cout<<"p:"<<p<<endl;
  Circle c(1.2,2.2,3.2);
  cout<<"original circle:x="<<c.getX()<<",y="<<c.getY()<<",r="<<c.getRadius()<<",area="<<c.area()<<endl;
  c.setPoint(5,5);
  cout<<"new circle:"<<c;
  Cylinder cy1(1.2,2.2,3.2,4.2);
  cout<<"original Cylinder:x="<<cy1.getX()<<",y="<<cy1.getY()<<",r="<<cy1.getRadius()<<",h="<<cy1.getHeight()<<",area="<<cy1.area()<<",volume="<<cy1.volume()<<endl;
  cy1.setPoint(5,5);
  cy1.setRadius(2.1);
  cy1.setHeight(3);
  cout<<"new Cylinder:"<<cy1;
  return 0;
}

运行结果:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值