三维空间的坐标点TPoint C++程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1C++面向对象程序设计基础
【实验简介】学会用算法语言C++描述抽象数据类型,使用模板建立数据结构。

理解数据结构的组成分为两部分,第一部分是数据集(数据元素),第二部分是在此数据集上的操作。

从面向对象的观点看,这两部分代表了对象的属性和方法。

掌握用C++描述数据结构的基本方法,即通过建立类来描述抽象数据类型。

类的数据成员提供对象属性,成员函数提供操作方法,方法是公共接口,用户通过调用方法实现对属性的访问。

【实验内容】
1.定义三维空间的坐标点TPoint
2.描述三维空间的球TBall,实现其主要操作(如计算体积和表面积,输出空间坐标
等)。

【主要代码】
#include<iostream.h>
#define PI 3.1415926
template <class T>
class Tpoint
{
private:
T x,y,z;
public:
Tpoint()
{x=0;y=0;z=0;}
Tpoint(T a,T b,T c)
{x=a;y=b;z=c;}
Tpoint(Tpoint &a);
T getx(){return x;}
T gety(){return y;}
T getz(){return z;}
T Tpointmove(T mx,T my,T mz)
{x+=mx;y+=my;z+=mz;}
void input()
{cout<<"请输分别输入点的坐标x,y,z 的值:"<<endl;
cin>>x>>y>>z;
}
void output()
{
cout<<"("<<x<<","<<y<<","<<z<<")" <<endl;
}
Tpoint<T> operator=(Tpoint<T>
&p1);
};
template <class T>
Tpoint<T>::Tpoint<T>(Tpoint<T> &p1) {
x=p1.getx();
y=p1.getx();
z=p1.getz(); }
template <class T>
Tpoint<T> Tpoint<T>::operator
=(Tpoint<T> &p2)
{
x=p2.getx();
y=p2.getx();
z=p2.getz();
return *this;
}
template <class T>
class Tball
{
private:
Tpoint<T> m;
double radius;
public:
Tball<T>()
{ radius=0;}
Tball<T>(Tpoint<T> & zx,T zy)
{ m=zx; radius=zy;}
T volume()
{return
(4.0/3)*PI*radius*radius*radius;
}
T area()
{return 4*PI*radius*radius;}
void setradius()
{
cout<<"设置球的半径:"<<endl;
cin>>radius;
}
void setTpoint()
{
cout<<"设置球的圆心坐标:
"<<endl;
m.input();
}
void output()
{
cout<<"球的圆心坐标为:";
m.output();
cout<<"球的半径为:
"<<radius<<endl;
}
void Tballmove(T mx,T my,T mz)
{ m.Tpointmove(mx,my,mz);} }; void main()
{
Tball<double> x1;
x1.setradius();
x1.setTpoint();
cout<<"球的表面积为:"<<x1.area()<<endl; cout<<"球的体积为:"<<x1.volume()<<endl; x1.output();
}
【实验过程】
设置球的半径
5.89
设置球的贺心坐标:
请分别输入点的坐标x,y,z的值:
1
2
3
球的表面积为:435.954
球的体积为:855.923
球的圆心坐标为:(1,2,3)
球的半径为:5.89
Press any key to continue
【实验体会】
首先要弄清楚球与点的关系,点是球的一个属性,所以在定义球类的时候不能用球继承点的类。

而是在球的属性值中,设置一个点作为圆心坐标。

在球的构造函数时需要对球心进心初始化,为了方便球心初始化对点类进行了“=”号重载。

相关文档
最新文档