资源描述
名称
编程题6_1_重载运算符:point类运算符重载
编译器选用g++
备注
描述
定义一个表示三维空间坐标点的类,并对下列运算符重载,主函数定义类对象并调用重载的运算符。
(1) 输出流运算符<<:按(x,y,z)的格式输出该点坐标(坐标值为整形)
(2) 关系运算符>:如果A点到原点(0,0,0)的距离大于B点到原点的距离则A>B的值为真,否则为假。
提示:(1)定义类的构造函数,带默认参数
(2) 关于文件包含的特别说明:在VC++6.0下要用#include<iostream.h>包含头文件才支持友元,但是在本系统中,请仍然用:
#include<iostream>
using namespace std;
进行文件包含,否则会出现编译时的告警,尽管运行结果可以正确通过.
(3) 主函数定义提示:
int main()
{ int a,b,c;
int o,p,q;//用于两个点的坐标值从键盘输入
……//输入以上6个整数
point p1(a,b,c),p2(o,p,q);//定义两个对象名为p1,p2
……//调用重载的<<运算符输出p1,p2
……//调用重载的>运算符比较p1,p2到原点的距离并按格式输出
return 0;
}
在保存并预览之后,点开:“测试用例”选项卡,再选择下方的“添加”,加入两组测试用例
第一个测试用例,输入部分:
10
10
20
15
15
10
输出部分:(10,10,20)
(15,15,10)
p1>p2:1
p2>p1:0
第二个测试用例,输入部分:20
20
10
15
15
20
输出部分:(20,20,10)
(15,15,20)
p1>p2:1
p2>p1:0
参考源程序代码
#include <iostream>
using namespace std;
//说明:在VC++下用#include<iostream.h>进行文件包含
class point
{
int x,y,z;
public:
point(int xx=0,int yy=0,int zz=0)
{
x=xx;
y=yy;
z=zz;
}
int operator >(const point &ob);
friend ostream &operator<<(ostream &out,const point &ob);
};
int point::operator >(const point &ob)
{
int d1,d2;
d1=x*x+y*y+z*z;
d2=ob.x*ob.x+ob.y*ob.y+ob.z*ob.z;
return d1>d2;
}
ostream &operator<<(ostream &out,const point &ob)
{
out<<"("<<ob.x<<","<<ob.y<<","<<ob.z<<")\n";
return out;
}
int main()
{
int a,b,c;
int o,p,q;
cin>>a>>b>>c;
cin>>o>>p>>q;
point p1(a,b,c),p2(o,p,q);
cout<<p1;
cout<<p2;
cout<<"p1>p2:"<<(p1>p2)<<endl;
cout<<"p2>p1:"<<(p2>p1)<<endl;
return 0 ;
}
参考源代码仅供老师参考,不要添加到系统中
★ 说明:
(1)请各位按上表格式,第一列不变,第二三列为各位根据题目填写
(2)允许的编程语言: 选gc++,
(3)名称和描述两项请将文档第二列内容对应贴入系统中
(4)测试用例请各位自己添加,题目的最后已有描述,每个题目也说明了要给几组测试用例
(5)其他选项可以自行设定,例如开启时间,结束时间,等等,需要大家逐步熟悉
展开阅读全文