题目56:
编写C++程序完成以下功能:
(1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;
(2)定义一个圆形类,其属性包括圆心和半径;
(3)创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。
//点类声明 #include<iostream> #pragma once //这句代码相当于#ifndef MyP #define MyP #endif这三句代码,都是为了防止重定义 //#ifndef MyP //#define MyP class MyPoint{ public: //初始化点 void Init(int x0, int y0); //计算距离 double calculationdistance(MyPoint &mp1); private: int x; int y; }; // //#endif
//点类的实现 #include<iostream> #include"MyPoint.h" //初始化点 void MyPoint::Init(int x0, int y0){ x = x0; y = y0; } double MyPoint::calculationdistance(MyPoint &mp1){ double d =sqrt((x - mp1.x)*(x - mp1.x) + (y - mp1.y)*(y - mp1.y)); return d; }
//圆类声明 #pragma once class MyCircle{ public: void Init(double x0, double y0, double r0); int jugdeintersect(MyCircle &mc1); private: double x; double y; double r; };
//圆类的实现 #include<iostream> #include"MyCircle.h" using namespace std; void MyCircle::Init(double x0, double y0, double r0){ x = x0; y = y0; r = r0; } int MyCircle::jugdeintersect(MyCircle &mc1){ int ret = 0; double temp = 0.0, temp2=0.0; temp = sqrt((x - mc1.x)*(x - mc1.x) + (y - mc1.y)*(y - mc1.y)); temp2 = r + mc1.r; if (temp>temp2) { //表示两圆不相交 ret = 1; } return ret; }
/* 编写C++程序完成以下功能: (1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法; (2)定义一个圆形类,其属性包括圆心和半径; (3)创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。 */ #include<iostream> #include"MyCircle.h" #include"MyPoint.h" using namespace std; void main(){ //定义两个点 //MyPoint mp1, mp2; //mp1.Init(1, 1); //mp2.Init(1, 2); //printf("两点之间的距离%lf\n", mp1.calculationdistance(mp2)); //定义两个圆 MyCircle c1, c2; c1.Init(1, 1, 1); c2.Init(1, 4, 1); if (c1.jugdeintersect(c2)) { printf("两圆不相交\n"); } else{ printf("两圆相交\n"); } system("pause"); }