#16198: 拜託!!各位大大說明一下哪裡錯了(該如何改


kolagh7486 (電腦前的咖啡)

學校 : 國立臺中高級工業職業學校
編號 : 88363
來源 : [1.200.121.142]
最後登入時間 :
2022-09-24 16:06:42
a005. Eva 的回家作業 -- POJ | From: [114.41.0.90] | 發表日期 : 2018-12-05 21:57

# include <iostream>

using namespace std;

int a,b,c,d,t;
int main()
{

cin>>t;
while(t-->=0&&t--<=20)
{
cin >> a >> b >> c >> d;
if((c-b)==(d-c))
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<d+(b-a)<<endl;
else
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<(b/a)*d<<endl;

}
}

 
#16201: Re:拜託!!各位大大說明一下哪裡錯了(該如何改


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
a005. Eva 的回家作業 -- POJ | From: [106.105.27.148] | 發表日期 : 2018-12-05 22:57

你在 while 迴圈的判斷式 (t-->=0&&t--<=20) 中,
其中每次判斷都會執行 t-- 2次,
所以每一次判斷完之後其 t 的數值會被 -2 而非 -1 ,
由於 t 是減少的且題目保證一開始 t 必定 <= 20 ,
所以 t--<=20 的部分就不需要留著了~~~

另外,
由於 後綴--運算子 回傳的數值是更改之前的數值, (若一開始 t=20, 則第一次 t-- 會回傳 20 , 雖然 t 已經變成 19 了)
所以當 t-- 回傳 0 時就應該要跳出迴圈, (從 20→0 是執行 21 次, 從 20→1 才會是執行 20 次)
故 t-->=0 應該要改成 t-->0 或 t--!=0 才會是對的~~~

不過對 int 而言 0 本身就代表 false , (其它數值則是 true )
所以實際上判斷是直接寫 t-- 就 OK 了,
因為我們是希望當 t-- 回傳 0 時就要跳出迴圈,
但 0 本身就可以直接代表 false 來中斷迴圈,
所以實際上直接寫 while(t--) 就 OK 了~~~
 
 
以上希望有幫助到你~~~  OwO
$\color{white}{\small a^2+b^2 test}$

 
#16203: Re:拜託!!各位大大說明一下哪裡錯了(該如何改


kolagh7486 (電腦前的咖啡)

學校 : 國立臺中高級工業職業學校
編號 : 88363
來源 : [1.200.121.142]
最後登入時間 :
2022-09-24 16:06:42
a005. Eva 的回家作業 -- POJ | From: [114.41.0.90] | 發表日期 : 2018-12-05 23:06

感謝大大

 




 
ZeroJudge Forum