为什么我的这个函数无法 判断点是否在圆上


#include 
#include "circle.h"
#include "point.h"
using namespace std;

void isincircle(circle& c, point& p)
{
    int distance=
        (c.getCenter().getX() - p.getX())* (c.getCenter().getX() - p.getX()) +
        (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
    int rdistance = c.getR() * c.getR();
    if (distance == rdistance)
    {
        cout << "点在圆上" << endl;
    }
    else if (distance > rdistance)
    {
        cout << "点在圆外" << endl;
    }
    else
    {
        cout << "点在圆内" << endl;
    }
}



int main()
{
    circle c1;
    int r = 0;
    cout << "输入圆的半径:" << endl;
    cin >> r;
    c1.setR(r);
    point center;//圆心
    int x1 = 0;
    cout << "输入圆心横坐标:" << endl;
    cin >> x1;
    center.setX(x1);
    int y1 = 0;
    cout << "输入圆心纵坐标:" << endl;
    cin >> y1;
    center.setY(y1);

    point p1;
    int x2 = 0;
    cout << "输入点的横坐标:" << endl;
    cin >> x2;
    p1.setX(x2);
    int y2 = 0;
    cout << "输入点的纵坐标:" << endl;
    cin >> y2;
    p1.setX(y2);
    isincircle(c1, p1);
    
    
    
    
}        

应该要在point point1上面,将center设置为c1的圆心。在你的这段程序中,没看到center与c1有什么关联,所以在isincircle的函数中,c.getCenter().getX()和c.getCenter().getY()取到的都不是输入的值,而是你在构造函数中的默认值。(望采纳)

point.h


#pragma once
#include <iostream>
using namespace std;

class point
{
private:
    int X;
    int Y;

public:
    void setX(int x);

        int getX();
    
        void setY(int y);

        int getY();
    

};