#22562: c++求神人解救


hsuhannie (saphir)

學校 : 臺北市私立復興實驗高級中學
編號 : 120854
來源 : [140.114.199.9]
最後登入時間 :
2023-09-18 14:42:46
a005. Eva 的回家作業 -- POJ | From: [115.43.42.111] | 發表日期 : 2020-09-15 23:31

#include<iostream>

 using namespace std;

 int main(){

  int t, a[3];

  cin >> t ;

  while(t>0){

  for (int i=0; i<=3; i++)

  cin >> a[i];

  if((a[1]/a[0])==(a[2]/a[1])==(a[3]/a[2])){

  for(int i=0; i<=3; i++)

  cout << a[i] << " ";

cout << (a[2]/a[1])*a[3] << endl;

}

else {

for(int i=0; i<=3; i++)

  cout << a[i] << " ";

cout << (a[2]-a[1])+a[3] << endl;

}

t-=1;

}

 }

 輸入題目給的數字

等差數列沒有問題,但是等比數列一直跑出1 2 4 8 10

就算我隱藏輸出等比數列的最後一個數字那行程式碼

那個10還是會跑出來...

 
#22564: Re:c++求神人解救


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a005. Eva 的回家作業 -- POJ | From: [123.194.188.217] | 發表日期 : 2020-09-16 00:11

if((a[1]/a[0])==(a[2]/a[1])==(a[3]/a[2])){

判斷式的串聯,C/C++ 的行為,跟數學和 Python 表現不同

2 == 2 == 2 在數學和 Python 會是肯定的
但在 C/C++ 會是 (2 == 2) == 2 → true == 2 → false

建議你寫成 (a[1]/a[0])==(a[2]/a[1]) && (a[2]/a[1])==(a[3]/a[2])

希望我這個凡人,能解答你的問題

 
#22573: Re:c++求神人解救


hsuhannie (saphir)

學校 : 臺北市私立復興實驗高級中學
編號 : 120854
來源 : [140.114.199.9]
最後登入時間 :
2023-09-18 14:42:46
a005. Eva 的回家作業 -- POJ | From: [115.43.42.111] | 發表日期 : 2020-09-16 22:06

if((a[1]/a[0])==(a[2]/a[1])==(a[3]/a[2])){

判斷式的串聯,C/C++ 的行為,跟數學和 Python 表現不同

2 == 2 == 2 在數學和 Python 會是肯定的
但在 C/C++ 會是 (2 == 2) == 2 → true == 2 → false

建議你寫成 (a[1]/a[0])==(a[2]/a[1]) && (a[2]/a[1])==(a[3]/a[2])

希望我這個凡人,能解答你的問題


非常感謝您的解惑!!!

 
ZeroJudge Forum