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


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


如題

  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 (夜貓)


如題

  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 ?