/*1. 定义点Point类作为基类,在此基础上派生出直线Line类和圆Circle类, 在Circle类的基础上以不同的属性

用C++编写1.定义点Point类作为基类,在此基础上派生出直线Line类和圆Circle类,在Circle类的基础上以不同的属性派生出圆柱Cylinder类和球Sphe... 用C++编写
1. 定义点Point类作为基类,在此基础上派生出直线Line类和圆Circle类,在Circle类的基础上以不同的属性派生出圆柱Cylinder类和球Spheroid类。并要求基类和各派生类具有以下特点:
(1) Line类含有计算直线长度和斜率的成员函数。
(2) Circle类含有计算圆面积的成员函数。
(3) Cylinder类含有计算圆柱表面积和体积的成员函数。
(4) Spheroid类含有计算球体的表面积和体积的成员函数。
(5) 要求在实验报告中画出类层次图。
急求
展开
 我来答
sinxiang
推荐于2018-03-04 · TA获得超过194个赞
知道答主
回答量:77
采纳率:0%
帮助的人:44.5万
展开全部
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <cmath>
class Point
{
int x;
int y;

public:
Point(){}
Point(int xx,int yy){x = xx;y = yy;}
~Point(){}
int X(){return x;}
int Y(){return y;}

};

class Line :public Point
{
Point Pa;
Point Pb;

public:
Line(){}
Line(Point pa,Point pb){Pa = pa;Pb = pb;};
float GetLineLengh();//获取直线长度
float GetLineAscent();//获取直线斜率
};

float Line::GetLineLengh()
{
int Lx = (abs(Pb.X()-Pa.X()))*(abs(Pb.X()-Pa.X()));
int Ly = (abs(Pb.Y()-Pa.Y()))*(abs(Pb.Y()-Pa.Y()));
return sqrt((float)(Lx+Ly));
}

float Line::GetLineAscent()
{
if(Pa.X() == Pb.X())
{
cout<<"斜率不存在"<<endl;
}
else return (float) (Pb.Y()-Pa.Y())/(Pb.X()-Pa.Y());
}

class Circle : public Point
{
float Radius;
public:
Circle(){}
Circle(float Rr){Radius = Rr;}
~Circle(){}
float GetCircleS(){return (float)3.14*Radius;}
float GetRadius(){return (float)Radius;}
};

class Cylinder :public Circle
{
float High;
Circle Cir;
public:
Cylinder(){}
Cylinder(Circle& cir,float high){Cir = cir;High = high;}
~Cylinder(){}
float GetCylinderS(){return (float)2*3.14*Cir.GetRadius()*High+2*3.14*Cir.GetRadius();}
float GetCylinderV(){return (float)3.14*Cir.GetRadius()*Cir.GetRadius()*High;}
};

class Spheroid : public Circle
{
float RR;
public:
Spheroid(){}
Spheroid(float rr){RR = rr;}
~Spheroid(){}
float GetSpheroidS(){return (float)4*3.14*RR*RR; }
float GetSpheroidV(){return (float)4*3.14*RR*RR*RR/3; }

};

int main()
{
Point Pa(1,2);
Point Pb(1,5);
Line ab(Pa,Pb);
cout<<"直线长度为:"<<ab.GetLineLengh()<<"\t斜率为:"<<ab.GetLineAscent()<<endl;
Circle cir(2);
cout<<"圆半径为"<<cir.GetRadius()<<"\t圆面积为:"<<cir.GetCircleS()<<endl;
Cylinder cyl(cir,6);
cout<<"圆柱的表面积为:"<<cyl.GetCylinderS()<<"\t圆柱的体积为: "<<cyl.GetCylinderV()<<endl;
Spheroid sph(2);
cout<<"球的表面积为:"<<sph.GetSpheroidS()<<"\t球的体积为: "<<sph.GetSpheroidV()<<endl;
system("pause");

}
匿名_热心网友
推荐于2016-05-03 · TA获得超过719个赞
知道大有可为答主
回答量:3827
采纳率:0%
帮助的人:8406万
展开全部
Press any key to continue
*/
#include <stdio.h>
void main() {
int i,j,k,a[3][3][3];
for(i = 0;i < 3;i++)
for(j = 0;j < 3;j++)
for(k = 0;k < 3;k++)
a[i][j][k] = i + j + k;
for(i = 0;i < 3;i++) {
for(j = 0;j < 3;j++) {
for(k = 0;k < 3;k++)
printf("%5d ",a[i][j][k]);
printf("\n");
}
printf("\n");
}
printf("\n");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jellycgl
2011-12-21 · TA获得超过417个赞
知道小有建树答主
回答量:1149
采纳率:66%
帮助的人:891万
展开全部
问题貌似没有问完啊,就算是复制粘贴也该有个完整的啊
追问
补充好了
追答
1.定义一个Point类,两个私有成员变量(点的横坐标和纵坐标),提供两个接口供外界获取这两个坐标;
2.定义Line类,继承自Point,该类同样设置两个私有变量(第二个点的横纵坐标),提供两个外部接口获得直线长度和斜率(两点已知求长度和斜率应该不用提供算法了吧)
3.定义Circle类,继承自Point,该类设置一个私有变量(圆的半径),提供一个外部接口获得这个半径的值,同时再设计一个接口计算圆的面积,这个算法应该也不用明说了吧
4.定义Cylinder类,继承自Circle,设置一个私有变量(圆柱的高),同理写两个外部接口计算其表面积和体积,会数学即可
5.定义Spheroid类,继承自Circle,直接写两个函数得到表面积和体积即可。
类的层次图很明显的,三层而已,相信你应该能搞定了,希望对你有所帮助,望采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式