编写c++程序用来判断点在圆内(包括圆上)还是圆外,要求用坐标轴判断。
Point.h
#ifndef _POINT_H
#define _POINT_H
class Point
{
private:
int m_x;
int m_y;
public:
void setxy(int x,int y);
int getdistance(Point &p);
};
#endif
Circle.h
#ifndef _CIRCLE_H
#define _CIRCLE_H
#include"Point.h"
class Circle
{
private:
int m_r;
Point m_p; //对象作为成员变量
public:
void set(int x,int y,int r);
bool judge(Point &p);
};
#endif
Point.cpp
#include"Point.h"
void Point::setxy(int x,int y)
{
m_x=x;
m_y=y;
}
int Point::getdistance(Point &p)
{
return ((this->m_x-p.m_x)*(this->m_x-p.m_x)+(this->m_y-p.m_y)*(m_y-p.m_y));
}
Circle.cpp
#include"Circle.h"
#include"Point.h"
#include<iostream>
using namespace std;
void Circle::set(int x,int y,int r)
{
m_r=r;
m_p.setxy(x,y);
}
bool Circle::judge(Point &p)
{
if(m_r*m_r>=p.getdistance(m_p))
{
return false;
}
else
return true;
}
main.cpp
#include"Circle.h"
#include<iostream>
using namespace std;
int main()
{
Circle c;
Point p;
p.setxy(1,2);
c.set(1,2,3);
if(c.judge(p))
{
cout<<"圆外"<<endl;
}
else
{
cout<<"圆内"<<endl;
}
return 0;
}
以上是正确程序。
改好之前,一堆bug(如下)。原以为要改很多,结果最后只改了两处就好了。
1.Point.h文件中class类中最后一个括号后忘记加了分号,导致Point.cpp(8.cpp)中出现许多bug。
2.Point.cpp文件中getdistance()函数,返回值少加了一个乘号。
这两处bug一共花了40分钟才搞完,没找出来之前一直以为是编译器坏了,改完之后才发现都是一些低级错误 。(下一目标:慢慢训练debug能力)