gpt4 book ai didi

c++ - 我在使用公式时遇到问题,程序运行正常,但答案似乎是错误的

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:08 33 4
gpt4 key购买 nike

下面的程序应该计算两点之间的距离:

标题.h

class point{
private:
double x, y, length;
public:
point();
point(double a, double b);

int set_length(point,point);
};

头文件.cpp

#include<iostream>
#include"header.h"
#include<math.h>
using namespace std;

point::point() :x(0), y(0) { }

point::point(double a, double b){
x = a;
y = b;
}

int point::set_length(point p1, point p2){

length = sqrt(((p2.x - p1.x)*(p2.x - p1.x)) +
((p2.y - p1.y)*(p2.y -p1.y)));
return length;
}

main.cpp

#include<iostream>
#include"header.h"
using namespace std;

int main(){
point p1(4, 1);
point p2(8, 2);

point length;

cout << length.set_length(p1, p2) << endl;
}

答案应该是 3 但不是。

谁能帮我实现距离公式?

最佳答案

您没有提供您得到的实际输出,但是,以下是可能的错误原因:

  1. 您使用的是类 UNIX 系统,并且没有为链接器提供 -lm 参数,因此数学库未链接进来,您会遇到奇怪的行为。如果您不链接某些其他系统上的数学库,您也会遇到类似的问题。所以,一定要链接数学库。

  2. 您正在从 point::set_lenght 返回 int,这将从 double 进行转换 - 转换是 不是 舍入,很可能是截断。更改为返回 double

顺便说一句,点 (4,1) 和 (8,2) 之间的距离不是 3。它类似于 4.12310563。

关于c++ - 我在使用公式时遇到问题,程序运行正常,但答案似乎是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33374831/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com