全部点都错了

P5735 【深基7.例1】距离函数

wmbwww @ 2023-09-01 19:28:22

#include <bits/stdc++.h>
using namespace std;

struct zc {
    int x;
    int y;
}a[4];

int cd(zc a, zc b) {
    double a1 = pow((b.x - a.x), 2.0);
    double a2 = pow((b.y - a.y), 2.0);
    double zc = pow((a1 + a2), 1 / 2);
    return zc;
}

int main() {
    for (int i = 1; i <= 3; i++) {
        cin >> a[i].x >> a[i].y;
    }
    double zzc = cd(a[1], a[2]) + cd(a[1], a[3]) + cd(a[2], a[3]);
    printf("%0.2lf", zzc);
    return 0;
}

按公式写的


by _Haoomff_ @ 2023-09-01 19:29:41

@wmbwww 绝对值!!!


by dingzj2022 @ 2023-09-01 19:32:39

@wmbwww 绝对值


by _Adolf_Hitler_ @ 2023-09-01 19:33:51

@wmbwww

int cd()是不是得改成double cd()


by wmbwww @ 2023-09-01 19:34:31

@Haoomff ,@dingzj2022 知道了,谢谢


by Rieman_sum @ 2023-09-01 19:34:48

@wmbwww abs函数

然后你的类型


by Iniaugoty @ 2023-09-01 19:41:27

@wmbwww double zc = pow((a1 + a2), 1 / 2); 改成 double zc = pow((a1 + a2), 0.5);。错误原因是 1 / 2 的类型是 int,算出来值为 0 而非 \dfrac{1}{2}


by Iniaugoty @ 2023-09-01 19:43:04

@Guo1 @dingzj2022 @Haoomff 和绝对值没有关系啊,你们不知道平方非负吗


by _Haoomff_ @ 2023-09-01 19:44:25

@gty314159 嗯对,你是对的。脑子挂了……


by Iniaugoty @ 2023-09-01 19:44:42

@wmbwww 另外最好不要用 pow() 函数吧,平方可以直接手动写乘法;平方根可以用 sqrt(x) 表示 \sqrt {x}。这个 pow 貌似有一点误差


by dingzj2022 @ 2023-09-01 19:49:32

@gty314159 哦(⊙o⊙)


| 下一页