12周任务4
来源:互联网 发布:麦子金服怎么样 知乎 编辑:程序博客网 时间:2024/06/05 20:26
#include<iostream> #include<Cmath> #include<iomanip> using namespace std; class Point { public: Point(){x = 0; y = 0;} Point(double x0,double y0) {x = x0; y = y0;} ~Point(){} double getx(){return x;} double gety(){return y;} friend ostream & operator << (ostream &, Point &); double x, y; }; class Circle: public Point { public: Circle(){radii = 0;} Circle(double x0, double y0, double r); ~Circle(){}; friend int locate(Point p1, Circle c1); double Length(Point p1, Point p2); friend ostream & operator << (ostream &, Circle &); friend bool operator > (Circle & c1, Circle & c2); friend bool operator < (Circle & c1, Circle & c2); friend bool operator >= (Circle & c1, Circle & c2); friend bool operator <= (Circle & c1, Circle & c2); friend bool operator == (Circle & c1, Circle & c2); friend bool operator != (Circle & c1, Circle & c2); friend void crossover_point1(Point & p1, Circle & c1, Point & p4, Point & p5); protected: double radii; }; Circle::Circle(double x0, double y0, double r):Point(x0, y0),radii(r){} void crossover_point1(Point & p1, Circle & c1, Point & p4, Point & p5) { double x0 =(c1.x-p1.x)*c1.radii/sqrt((c1.x-p1.x)*(c1.x-p1.x)+(c1.y-p1.y)*(c1.y-p1.y)); double y0 =(c1.y-p1.y)*c1.radii/sqrt((c1.x-p1.x)*(c1.x-p1.x)+(c1.y-p1.y)*(c1.y-p1.y)); p4.x=c1.x+x0; p4.y=c1.y+y0; p5.x=c1.x-x0; p5.y=c1.y-y0; } int locate(Point p1, Circle c1) { double length = sqrt((p1.x - c1.x) * (p1.x - c1.x) + (p1.y - c1.y) * (p1.y - c1.y)); if(length < c1.radii) return 1; else if(length == c1.radii) return 0; else return -1; } ostream & operator << (ostream & out, Point & p) { out << "(" << p.x << "," << p.y << ")" << endl; return out; } ostream & operator << (ostream & out, Circle & c) { out << "以" << "(" << c.x << "," << c.y << ")为圆心," << "半径为 " << c.radii << "的圆 " << endl; return out; } bool operator > (Circle & c1, Circle & c2) { if(c1.radii > c2.radii) return true; else return false; } bool operator < (Circle & c1, Circle & c2) { if(c1.radii < c2.radii) return true; else return false; } bool operator >= (Circle & c1, Circle & c2) { if(c1.radii >= c2.radii) return true; else return false; } bool operator <= (Circle & c1, Circle & c2) { if(c1.radii <= c2.radii) return true; else return false; } bool operator == (Circle & c1, Circle & c2) { if(c1.radii == c2.radii) return true; else return false; } bool operator != (Circle & c1, Circle & c2) { if(c1.radii != c2.radii) return true; else return false; } 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; cout << endl; cout << "圆c1: " << c1; if(c1 > c2) { cout << "大于" << endl; } if(c1 < c2) { cout << "小于" << endl; } if(c1 >= c2) { cout << "大于等于" << endl; } if(c1 <= c2) { cout << "小于等于" << endl; } if(c1 == c2) { cout << "等于" << endl; } if(c1 != c2) { cout << "不等于" << endl; } cout << "圆c2: " << c2; cout << endl; Point p4, p5; crossover_point1(p1, c1, p4, p5); cout << "点p1: " << p1; cout << "与圆c1: " << c1; cout << "的圆心相连,与圆交于两点,分别是:" << endl; cout << "交点: " << p4; cout << "交点: " << p5; cout << endl; system("pause"); return 0; }
运行结果:
感言:大的程序无外乎一个个小地程序,不想被落下,哎。。。。。。
- 12周任务4
- 12周任务4
- 第12周实验报告任务4
- 12周任务2
- 12周任务3
- 16周任务4
- 第二周任务4
- 第三周任务4
- 第三周任务4
- 第三周任务4
- 第4周任务
- 4周任务3
- 第五周任务4
- 第五周任务 4
- 第六周任务4
- 第六周任务4
- 第六周任务4
- 第六周任务4
- 通过注册表修改VC6.0的字体(可以解决在字体设置里面没有可选字体的问题)
- Java学习笔记之 Map取出元素的三种方式
- FireFox下Ajax同步请求onReadyStateChange不执行问题解决
- OPENJUDGE 2925 大整数的因子
- gl.h文件错误
- 12周任务4
- android 百度地图长按弹出气泡 popupWindow
- 有关前端设计
- NFS启动根文件系统
- jqGrid 各种参数 详解
- poj 4047 Garden
- xml/2
- 《一步一脚印 90后程序员》8
- MySQL数据库中的Date,DateTime和TimeStamp类型详解