7-15 打印点、圆、圆柱信息分数 10

定义平面二维点类CPoint,有数据成员x坐标,y坐标,函数成员(构造函数、虚函数求面积GetArea, 虚函数求体积函数GetVolume、输出点信息函数print。
由CPoint类派生出圆类Cirle类(新增数据成员半径radius),函数成员(构造函数、求面积GetArea,虚函数求体积函数GetVolume、输出圆面积信息函数print。
再由Ccirle类派生出圆柱体Ccylinder类(新增数据成员高度height),函数成员(构造函数、求表面积GetArea ,求体积函数GetVolume、输出圆柱体体积信息函数print。在主函数测试这个这三个类。
打印数据保留小数点后2位

输入格式:

点的:x坐标
点的:y坐标
圆半径
圆柱高

输出格式:

点信息
圆面积
圆柱体积

输入样例:

在这里给出一组输入。例如:

1
2
3
4

输出样例:

在这里给出相应的输出。例如:

CPoint:1,2
CirleArea:28.26
CcylinderVolume:113.04

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

 全部代码:

#include<bits/stdc++.h>
using namespace std;
class cpoint{
	protected:
		int x,y;
		public:
			cpoint(int x,int y):x(x),y(y)
			{
				
			}
			void setpoint(int a,int b)              //标记坐标 
			{
				x=a;
				y=b;
			}
		virtual double getarea(){ 
		}                                             //根据题上要求写就是了,这个面积没法算,我们最后也用不到,就没必要写完整
		                                              //写个函数名放着就可以了,当然也可以选择不写,只写最后能用到的函数就OK 
		virtual double getvol(){
		}
		virtual void print()
		{
			cout<<"CPoint:"<<x<<","<<y<<endl;
		}
		
};
class cirle:public cpoint{
	protected:                                       //其实这里我也不太明白,我之前写的派生都是私有成员,但是这道题不行 
	double r;                                        //我就改成了保护成员,我也不太清楚为啥不行 
	public: 
	cirle(int x,int y,double c):cpoint(x,y),r(c)      //这里直接通过cpoint构造函数传进来x,y 
	{
		
	}
		virtual double getarea(){                       //像这个,我们能用到,就把它写完整 
			
			return r*r*3.14;
		}
		virtual double getvol(){                       //而这个,我们用不到,写个函数名放着就行,不写也可以 
		}
		virtual void print()
		{
			cout<<"CirleArea:"<<fixed<<setprecision(2)<<cirle::getarea()<<endl;    //输出直接写类的函数是不行的 
		}                                                                         //可以写成“类名::函数名”这样就能调用了 
	
	 
}; 
class cylinder:public cirle{
	private:
		double h;
		public:
			cylinder(int a,int b,double c,double d):cirle(a,b,c),h(d) //直接用cirle构造传进来a,b,c 
			{
				
			}
			
		virtual double getarea(){
		}
		virtual double getvol(){
			return r*r*h*3.14;                 //这里用到的是体积,我们就写个体积函数就好 
		}
		virtual void print()
		{
			cout<<"CcylinderVolume:"<<fixed<<setprecision(2)<<cylinder::getvol()<<endl;
		}
			
};
int main()
{
	int x,y,r,h;
	cin>>x>>y>>r>>h;
  cpoint A(x,y);
  A.setpoint(x,y);
  A.print();
  cirle B(x,y,r);
  B.getarea();
  B.print();
  cylinder C(x,y,r,h);
  C.getvol();
  C.print();

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值