求助

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

KobeBeanBryant @ 2020-10-31 09:41:22

为啥这个代码过了样例然后测试全WA

#include<bits/stdc++.h>
using namespace std;
double a[10],b[10],j[10];
double k=0;
double g(double f,double r,double q,double x)
{
    return sqrt((r-f)*(r-f)+(x-q)*(x-q));
}
double w(double d,double z,double u,double y)
{
    return sqrt((z-d)*(z-d)+(y-u)*(y-u));
}
double t(double v,double w,double o,double p)
{
    return sqrt((w-v)*(w-v)+(p-o)*(p-o));
}
int main(){
    for(int i=0;i<3;i++)
        cin>>a[i]>>b[i];
    j[0]=g(a[0],b[0],a[1],b[1]);
    j[1]=w(a[1],b[1],a[2],b[2]);
    j[2]=t(a[0],b[0],a[2],b[2]);
    k=k+j[0]+j[1]+j[2];
    cout<<fixed<<setprecision(2)<<k<<endl;;
}

by haraki @ 2020-10-31 09:45:09

@KobeBeanBryant 不是很懂为啥封装三个一模一样的函数


by haraki @ 2020-10-31 09:45:48

@KobeBeanBryant 另外,最后一行输出多打了一个分号


by 星河揽清梦 @ 2020-10-31 09:47:20

建议py


by 星河揽清梦 @ 2020-10-31 09:47:59

@九天丶星河 python 3


by 幽灵特工 @ 2020-10-31 09:49:58

你的坐标值搞反啦,错误出在cin。

你读入的第一组x,y被当做两个点的横坐标处理了


by 幽灵特工 @ 2020-10-31 09:55:16

main里改成这样

for(int i=0;i<3;i++)
        cin>>a[i]>>b[i];
    j[0]=g(a[0],a[1],b[0],b[1]);
    j[1]=w(a[1],a[2],b[1],b[2]);
    j[2]=t(a[2],a[3],b[2],b[3]);
    k=k+j[0]+j[1]+j[2];

能过第一个点,之后的四个点都是四舍五入的误差问题,建议你用printf输出.

互关一起学习OI吧


by Shirο @ 2020-10-31 10:06:37

五道黑/kk

牛逼死了


by KobeBeanBryant @ 2020-11-04 19:14:21

好了现在呢```cpp

include<bits/stdc++.h>

using namespace std; double a[3],b[3],j[3]; double k=0; double g(double f,double r,double q,double x) { return sqrt((r-f)(r-f)+(x-q)(x-q)); }

int main(){ for(int i=0;i<3;i++) scanf("%lf%lf",&a[i],&b[i]); j[0]=g(a[0],a[1],b[0],b[1]); j[1]=g(a[1],a[2],b[1],b[2]); j[2]=g(a[2],a[3],b[2],b[3]); k=k+j[0]+j[1]+j[2]; printf("%.2lf",k); }


by KobeBeanBryant @ 2020-11-16 18:22:03

include<bits/stdc++.h>
using namespace std; double a[3],b[3],j[3]; double k=0; double g(double f,double r,double q,double x) { return sqrt((r-f)(r-f)+(x-q)(x-q)); }

int main(){ for(int i=0;i<3;i++) scanf("%lf%lf",&a[i],&b[i]); j[0]=g(a[0],a[1],b[0],b[1]); j[1]=g(a[1],a[2],b[1],b[2]); j[2]=g(a[2],a[3],b[2],b[3]); k=k+j[0]+j[1]+j[2]; printf("%.2lf",k); }

代码好了,然后问个小问题:printf怎么输出


|