#2120: 請教一下哪裡錯=ˇ= 剛接觸C/C++ 這題試了好多次...應該沒錯阿...


df405102 (skull)

學校 : 臺北市立忠孝國民中學
編號 : 7067
來源 : [61.230.41.203]
最後登入時間 :
2021-08-31 13:58:54
b080. A. 畢氏定理 -- 2007 NPSC 國中組決賽 | From: [66.249.71.164] | 發表日期 : 2009-07-01 19:19

  1. #include <iostream>            
  2. #include <cmath>           
  3. using namespace std;            
  4.            
  5. int main(void)            
  6. {            
  7. int a,b,p,t;            
  8. while(cin>>a>>b)            
  9. {            
  10.    if ((a=0)&&(b=0))            
  11.    {            
  12.       break;            
  13.    }            
  14.    if (a<b)            
  15.    {            
  16.       p=a;            
  17.       a=b;            
  18.       b=p;            
  19.    }            
  20.    t=sqrt(a*a-b*b);      
  21.             
  22.    if (t==sqrt(a*a-b*b))         
  23.    {         
  24.        t=sqrt(a*a+b*b);      
  25.    }         
  26.    if ((t==sqrt(a*a-b*b))||(t==sqrt(a*a+b*b)))      
  27.    {      
  28.       cout<<t<<endl;      
  29.    }      
  30.    else     
  31.    {      
  32.       cout<<"Wrong"<<endl;      
  33.    }      
  34. }            
  35. }        
 
#2422: Re:請教一下哪裡錯=ˇ= 剛接觸C/C++ 這題試了好多次...應該沒錯阿...


chester0628 (林韋)

學校 : 徐匯中學
編號 : 7926
來源 : [210.60.106.245]
最後登入時間 :
2009-10-05 12:58:43
b080. A. 畢氏定理 -- 2007 NPSC 國中組決賽 | From: [210.60.106.245] | 發表日期 : 2009-09-29 13:05

  1. #include             
  2. #include            
  3. using namespace std;            
  4.            
  5. int main(void)            
  6. {            
  7. int a,b,p,t;            
  8. while(cin>>a>>b)            
  9. {            
  10.    if ((a=0)&&(b=0))            
  11.    {            
  12.       break;            
  13.    }            
  14.    if (a
    •    {            
    •       p=a;            
    •       a=b;            
    •       b=p;            
    •    }            
    •    t=sqrt(a*a-b*b);      
    •             
    •    if (t==sqrt(a*a-b*b))         
    •    {         
    •        t=sqrt(a*a+b*b);      
    •    }         
    •    if ((t==sqrt(a*a-b*b))||(t==sqrt(a*a+b*b)))      
    •    {      
    •       cout<
      •    }      
      •    else     
      •    {      
      •       cout<<"Wrong"<
        •    }      
        • }            
        • }        
        • 是不是wrong要小寫

 
#2430: Re:請教一下哪裡錯=ˇ= 剛接觸C/C++ 這題試了好多次...應該沒錯阿...


david942j (文旋)

學校 : 臺北市立成功高級中學
編號 : 6086
來源 : [115.43.75.16]
最後登入時間 :
2017-02-18 13:17:39
b080. A. 畢氏定理 -- 2007 NPSC 國中組決賽 | From: [58.115.130.141] | 發表日期 : 2009-10-01 20:23

  1. #include             
  2. #include            
  3. using namespace std;            
  4.            
  5. int main(void)            
  6. {            
  7. int a,b,p,t;            
  8. while(cin>>a>>b)            
  9. {            
  10.    if ((a=0)&&(b=0))            
  11.    {            
  12.       break;            
  13.    }            
  14.    if (a
    •    {            
    •       p=a;            
    •       a=b;            
    •       b=p;            
    •    }            
    •    t=sqrt(a*a-b*b);      
    •             
    •    if (t==sqrt(a*a-b*b))         
    •    {         
    •        t=sqrt(a*a+b*b);      
    •    }         
    •    if ((t==sqrt(a*a-b*b))||(t==sqrt(a*a+b*b)))      
    •    {      
    •       cout<
      •    }      
      •    else     
      •    {      
      •       cout<<"Wrong"<
        •    }      
        • }            
        • }        
        • 是不是wrong要小寫


比較t與sqrt會因為浮點數是用二進位而造成誤差

例如sqrt(9*9+40*40)==41  系統不一定會作正確判斷

另外此題建議使用看sqrt(a*a+b*b)或sqrt(a*a-b*b)是不是正整數

判斷的方法

#include <cmath>       //使用數學函數的標頭檔

//中間的code省略 

double t=sqrt(a*a-b*b); 

if( floor(t)==ceil(t) )         //floor與ceil分別為取下高斯與上高斯的函數  所以兩數相等時t就是正整數

cout<<"t是正整數" <<"\n";

 
#8084: Re:請教一下哪裡錯=ˇ= 剛接觸C/C++ 這題試了好多次...應該沒錯阿...


chenzhao (nothing)

學校 : 福建省福州第十九中学
編號 : 32689
來源 : [143.215.55.85]
最後登入時間 :
2021-09-04 02:16:24
b080. A. 畢氏定理 -- 2007 NPSC 國中組決賽 | From: [140.224.84.239] | 發表日期 : 2013-08-12 21:58


    1. if ((a==0)&&(b==0))            
 
ZeroJudge Forum