问题:
实现一个名为Circle的圆类,并规定其数据成员float *radius为指向半径值的指针。以Point类的对象指针作为另一个数据成员,表示圆心位置。定义一个判别两圆位置关系(相交/外离/内含/内切/外切)的函数。
注意:使用函数指针调用函数,熟悉各类指针的用法。
#include "stdafx.h"
#include<iostream>
//#include<math.h>
using namespace std;
class Point{
public:
Point ();
Point (float xx,float yy):x(xx),y(yy){}
float getx(){return x;}
float gety(){return y;}
private:
float x,y;
};
class Circle{
private:
float r;
Point p;
public:
//float *radius;
Circle ();
Circle (float R,Point P):r(R),p(P){};
int judge();
};
Circle c1,c2;
int Circle::judge(){
if(sqrt((c1.p.getx()-c2.p.getx())*(c1.p.getx()-c2.p.getx())+(c1.p.gety()-c2.p.gety())*(c1.p.gety()-c2.p.gety()))==(c1.r+c2.r))
return 1;
if(sqrt((c1.p.getx()-c2.p.getx())*(c1.p.getx()-c2.p.getx())+(c1.p.gety()-c2.p.gety())*(c1.p.gety()-c2.p.gety()))<(c1.r+c2.r))
return 2;
if(sqrt((c1.p.getx()-c2.p.getx())*(c1.p.getx()-c2.p.getx())+(c1.p.gety()-c2.p.gety())*(c1.p.gety()-c2.p.gety()))>(c1.r+c2.r))
return 3;
if(sqrt((c1.p.getx()-c2.p.getx())*(c1.p.getx()-c2.p.getx())+(c1.p.gety()-c2.p.gety())*(c1.p.gety()-c2.p.gety()))==(c1.r-c2.r))
return 4;
if(sqrt((c1.p.getx()-c2.p.getx())*(c1.p.getx()-c2.p.getx())+(c1.p.gety()-c2.p.gety())*(c1.p.gety()-c2.p.gety()))<(c1.r-c2.r))
return 5;
}
int main(){
//int (Circle::*J)();
//J=&Circle::judge;
float x1,y1,x2,y2;
cout<<"请输入p1的横坐标:";
cin>>x1;
cout<<"请输入p1的纵坐标:";
cin>>y1;
cout<<"请输入p2的横坐标:";
cin>>x2;
cout<<"请输入p2的纵坐标:";
cin>>y2;
Point p1(x1,y1),p2(x2,y2);
float r1,r2;
cout<<"请输入圆1的半径:";
cin>>r1;
cout<<"请输入圆2的半径:";
cin>>r2;
Circle c1(r1,p1),c2(r2,p2),c;
if(c.judge()==1)
cout<<"两圆相外切";
if(c.judge()==2)
cout<<"两圆相交";
if(c.judge()==3)
cout<<"两圆相离";
if(c.judge()==4)
cout<<"两圆相内切";
if(c.judge()==5)
cout<<"两圆相内离";
return 0;
}
```这是我自己写的,执行不了。。而且我也不太会用指针,求指教。
Point ();
Circle ();
这两个构造函数定义了没有实现
另外
#include<cmath>