第十三周 项目一 点和圆的关系

来源:互联网 发布:淘宝u站中心首页 编辑:程序博客网 时间:2024/05/20 09:45
/* * 程序的版权和版本声明部分: * Copyright (c) 2013.烟台大学计算机学院 * All rights reserved. * 文件名称: * 作    者:何新新* 完成日期:2014 年 5月 23日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: * 输入描述: * 问题描述: * 程序输出: */  #include <iostream>  #include <Cmath>  using namespace std;  class Point  {  protected:      int x;      int y;  public:      Point(int a,int b):x(a),y(b) {}      ~Point() {};      friend ostream &operator<<(ostream &output,Point &p);      int getX()      {          return x;      }      int getY()      {          return y;      }  };  class Circle:public Point  {  public:      Circle(int a,int b,int c):Point(a,b),r(c) {}      friend int locate (Point &p,Circle &c);      ~Circle() {};      friend ostream &operator<<(ostream &output,Circle &c);      int getR()      {          return r;      }  protected:      int r;  };  ostream &operator<<(ostream &output,Point &p)  {      output<<"("<<p.x<<","<<p.y<<")"<<endl;      return output;  }  ostream &operator<<(ostream &output,Circle &c)  {      output<<"圆心为:"<<"("<<c.getX()<<","<<c.getY()<<")";      output <<"圆的半径为:"<<c.getR()<<endl;      return output;  }  int locate (Point &p,Circle &c)  {      double t;      t=sqrt((p.getX()-c.getX())*(p.getX()-c.getX())+(p.getY()-c.getY())*(p.getY()-c.getY()));      if(t<c.r)          return -1;      else if(t==c.r)          return 0;      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<<"圆c2:"<<c2;      cout<<"点p1:"<<p1;      cout<<"点p1在圆c1之"<<((locate(p1,c1)>0)?"外":((locate(p1,c1)<0)?"内":"上"))<<endl;      cout<<"点p1在圆c2之"<<((locate(p1,c2)>0)?"外":((locate(p1,c2)<0)?"内":"上"))<<endl;      cout<<"点p2:"<<p2;      cout<<"点p2在圆c1之"<<((locate(p2,c1)>0)?"外":((locate(p2,c1)<0)?"内":"上"))<<endl;      cout<<"点p2在圆c2之"<<((locate(p2,c2)>0)?"外":((locate(p2,c2)<0)?"内":"上"))<<endl;      cout<<"点p3:"<<p3;      cout<<"点p3在圆c1之"<<((locate(p3,c1)>0)?"外":((locate(p3,c1)<0)?"内":"上"))<<endl;      cout<<"点p3在圆c2之"<<((locate(p3,c2)>0)?"外":((locate(p3,c2)<0)?"内":"上"))<<endl;      return 0;  }  
 
0 0
原创粉丝点击