不注意数据类型的下场!

事情是这样的……

星期一晚上我打开了PornhubOiAcFun打算找点题做 然后我发现了这道题:

原题:

已知线段的两个端点的坐标 A(Xa ,Ya ),B(Xb,Yb),求线段 AB 的长度。
计算鸭告诉了你计算公式如下: (Xa−Xb)²+(Ya−Yb)²再开平方

输入的格式是:


第一行是两个实数 Xa,Ya,即 A 的坐标。 第二行是两个实数 Xb,Yb,即 B 的坐标。 输入中所有实数的绝对值均不超过 10000 。 看起来是一道很简单的题对吧,我前前后后答了9次。
(等下了课继续写)
4 个赞

第一次尝试……


#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
    int Xa,Ya;
    int Xb,Yb;
    cin>>Xa>>Ya;
    cin>>Xb>>Yb;
    int acha,bcha;
    acha=Xa-Xb;
    bcha=Ya-Yb;
    int loong;
    loong=(Xa-Xb)*(Xa-Xb)+(Ya-Yb)*(Ya-Yb);
    if(Xa>10000||Xb>10000||Ya>10000||Yb>10000||loong>10000){
        cout<<"Error!";
        return 1;
    }
	if(acha<0||bcha<0){
            cout<<"出错!Xa-Xb或Ya-Yb都不可小于零!";
                return 1;
    }
    double reallong=pow(loong,0.5);
    cout<<fixed<< setprecision (3) <<reallong<<endl;
}

从这里开始我犯了一个足以判我死刑的致命错误:我给Xa Xb Ya Yb设置的数据类型为int,但实际上,

是的。

这里是实数Xa,Ya。

而int是什么,整数! 还有两个错误:
if(Xa>10000||Xb>10000||Ya>10000||Yb>10000||loong>10000){
 cout<<"Error!";
 return 1;

}
if(acha<0||bcha<0){
cout<<“出错!Xa-Xb或Ya-Yb都不可小于零!”;
return 1;
}

我加了两个毫无卵用的判断语句。

4 个赞

最后两个分号怎么回事 :face_with_monocle:

4 个赞

哪两个分号?

4 个赞

可能是说的是这个

2 个赞

他说的也许是我错打成了中文分号的那两个(①),那个不用管了

3 个赞

下午见 :wink:

2 个赞

你也到了吗,我马上到。

二楼D103房间的浴室等你

3 个赞

what

4 个赞

我在D104偷听

4 个赞

我在D103洗澡,你们干什么!

3 个赞

我在D103第二张:bed:床底偷窥,不要问为什么装了摄像头还是要去D103()

3 个赞