#13155: 請問各位大神這樣的判別式有甚麼問題?


vm3xk4xk4@gmail.com (邊緣人求組隊)

學校 : 不指定學校
編號 : 73895
來源 : [118.171.27.234]
最後登入時間 :
2017-12-20 18:31:58
a005. Eva 的回家作業 -- POJ | From: [118.171.219.132] | 發表日期 : 2017-12-20 21:38

如題

  1. int main()  
  2. {  
  3.     int t,a[5],i,count;  
  4.     scanf("%d",&t);  
  5.     while(t--)  
  6.     {  
  7.         for(i=0;i<4;i++)  
  8.             scanf("%d",a+i);  
  9.         if((a[1]-a[0])==(a[2]-a[1])==(a[3]-a[2]))  
  10.         {  
  11.             for(i=0;i<4;i++)  
  12.                 printf("%d ",a[i]);  
  13.             printf("%d\n",a[1]-a[0]+a[3]);  
  14.         }  
  15.         else  
  16.         {  
  17.             for(i=0;i<4;i++)  
  18.                 printf("%d ",a[i]);  
  19.             printf("%d\n",(a[1]/a[0])*a[3]);  
  20.         }  
  21.   
  22.     }  
  23.     return 0;  
  24.   

實際跑測資後,如input 測資為1 2 3 4則答案為1(1 2 3 4 5)

但如果輸入為2 4 6 8答案卻會顯示16(2 4 6 8 16)

我以為是邏輯上可行的,想請問各位大神們錯誤在哪?

謝謝

 

 

 
#13156: Re:請問各位大神這樣的判別式有甚麼問題?


justinO__o (夜貓)

學校 : 臺北市立成功高級中學
編號 : 51052
來源 : [111.71.212.14]
最後登入時間 :
2024-09-22 17:57:48
a005. Eva 的回家作業 -- POJ | From: [175.182.138.248] | 發表日期 : 2017-12-21 00:23

如題

  1. int main()  
  2. {  
  3.     int t,a[5],i,count;  
  4.     scanf("%d",&t);  
  5.     while(t--)  
  6.     {  
  7.         for(i=0;i<4;i++)  
  8.             scanf("%d",a+i);  
  9.         if((a[1]-a[0])==(a[2]-a[1])==(a[3]-a[2]))  
  10.         {  
  11.             for(i=0;i<4;i++)  
  12.                 printf("%d ",a[i]);  
  13.             printf("%d\n",a[1]-a[0]+a[3]);  
  14.         }  
  15.         else  
  16.         {  
  17.             for(i=0;i<4;i++)  
  18.                 printf("%d ",a[i]);  
  19.             printf("%d\n",(a[1]/a[0])*a[3]);  
  20.         }  
  21.   
  22.     }  
  23.     return 0;  
  24.   

實際跑測資後,如input 測資為1 2 3 4則答案為1(1 2 3 4 5)

但如果輸入為2 4 6 8答案卻會顯示16(2 4 6 8 16)

我以為是邏輯上可行的,想請問各位大神們錯誤在哪?

謝謝

 

 




其實 if (a[2] - a[1] == a[1] - a[0]) 就夠了

你應該是想寫 if (a[1] - a[0] == a[2] - a[1] && a[2] - a[1] == a[3] - a[2])

如果沒有 "&&"

那他會判成 (a[1] - a[0] == a[2] - a[1]) == a[3] - a[2]

而 (a[1] - a[0] == a[2] - a[1]) 只有true 或 false

也就是 0 or 1

所以判成 (1 == a[3] - a[2])  /  (0 == a[3] - a[2])

應該是這樣吧 0u0 ?

 
ZeroJudge Forum