编写c++程序用来判断点在圆内(包括圆上)还是圆外,要求用坐标轴判断。(debug过程)

编写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能力)

猜你喜欢

转载自blog.csdn.net/mmmmmmyy/article/details/81176209