第十二周(点圆类)
来源:互联网 发布:泰安大掌柜软件 编辑:程序博客网 时间:2024/05/20 21:23
/*
*copyright(c) 2015,烟台大学计算机学院
*All rights reserved。
*文件名称:第十二周(点圆类)
*copyright(c) 2015,烟台大学计算机学院
*All rights reserved。
*文件名称:第十二周(点圆类)
*作者:王忠
*完成日期:2015.5.27
*版本号:v1.0
*
*问题描述:(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);
(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员(半径),基类的成员表示圆心;
(3)编写上述两类中的构造、析构函数及必要运算符重载函数(本项目主要是输入输出);
(4)定义友元函数int locate,判断点p与圆的位置关系(返回值<0圆内,==0圆上,>0 圆外);
*输入描述:
*程序输出:
#include<iostream>#include<Cmath>using namespace std;class Point //定义坐标点类{public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0), y(y0) {}; friend ostream& operator <<(ostream &output,Point &p); double distance(Point &p);protected: double x,y; //点的横坐标和纵坐标};class Circle:public Point{public: Circle(double x,double y,double z):Point(x,y),r(z) {} friend istream& operator >>(istream &input,Circle &c); friend ostream& operator <<(ostream &output,Circle &c); friend int locate(Point &p, Circle &c);protected: double r;};ostream& operator <<(ostream &output,Point &p){ output<<"Point: ("<<p.x<<","<<p.y<<")"<<endl; return output;}double Point::distance(Point &p){ double dx = x-p.x; double dy = y-p.y; return sqrt(dx*dx+dy*dy);}istream& operator >>(istream &input,Circle &c){ double a,b,d; cout<<"输入半径,圆心坐标:"; input>>a>>b>>d; Circle(a,b,d); return input;}ostream& operator <<(ostream &output,Circle &c){ output<<"Circle: ("<<c.r<<","<<c.x<<","<<c.y<<")"<<endl; return output;}int locate(Point &p,Circle &c){ Point cp(c.x,c.y); double d = cp.distance(p); if (d==c.r) return 0; else if (d < c.r) return -1; else return 1;}int main( ){ Circle c1(3,2,4),c2(4,5,5); //c2应该大于c1 Point p1(1,1),p2(3,-2),p3(7,3); //分别位于c1内、上、外 cout<<"圆c1: "<<c1; cout<<"点p1: "<<p1; cout<<"点p1在圆c1之"<<((locate(p1, c1)>0)?"外":((locate(p1, c1)<0)?"内":"上"))<<endl; cout<<"点p2: "<<p2; cout<<"点p2在圆c1之"<<((locate(p2, c1)>0)?"外":((locate(p2, c1)<0)?"内":"上"))<<endl; cout<<"点p3: "<<p3; cout<<"点p3在圆c1之"<<((locate(p3, c1)>0)?"外":((locate(p3, c1)<0)?"内":"上"))<<endl; return 0;}
0 0
- 第十二周(点圆类)
- 第十二周(Consecutive)
- 第十二周作业(一)
- 第十二周任务(一)
- 第十二周任务(一)
- 第十二周任务(二)
- 第十二周任务(三)
- 第十二周任务(1)
- 第十二周任务(2)
- 第十二周任务(2)
- 第十二周任务(三)
- 第十二周任务(三)
- 第十二周任务(二)
- 第十二周任务(一)
- 第十二周作业(1)
- 第十二周作业(2)
- 编程练习(第十二周)
- 第十二周项目(1)
- android UI笔记
- RAM刷新周期问题
- Android中使用Handler造成内存泄露的分析和解决
- NPL:语义分析之依存文法分析
- Linux下通过端口查看进程
- 第十二周(点圆类)
- Android 重写onCreateOptionsMenu后菜单项不显示的问题
- JavaEE
- Android4.4从图库选择图片返回的路径不正确的解决方法
- centos6 使用epel源
- wechat-js-sdk
- C#程序员整理的Unity 3D笔记(二十):2D Toolkit之官方教程《Whack a Mole》
- mysql index and key
- 新安装的MySQL必须调整的10项配置