#29145: 我有個疑問


zoosewu (lion)

學校 : 臺北市立中正高級中學
編號 : 114560
來源 : [120.101.10.23]
最後登入時間 :
2024-05-23 13:57:03
a148. You Cannot Pass?! | From: [123.194.85.227] | 發表日期 : 2022-02-01 17:27

#include<iostream>

#include<stdio.h>

using namespace std;

int main(){

int n,i,x;

  • double a,total; 我原本把 total寫在 int 的宣告中會WA,但是移到double 就AC了,請問是成績測資有非整數還是其他原因?

while(cin>>n){

total=0;

for(i=0;i<n;i++){

cin>>x;

total+=x;

}

a=total/n;

if(a>59)

cout<<"no";

else

cout<<"yes";

cout<<endl;

}

}

 
#29146: Re:我有個疑問


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a148. You Cannot Pass?! | From: [39.10.69.232] | 發表日期 : 2022-02-01 18:32


a=total/n;


因為如果total和n都是int,就會進行整數除法,結果會是整數,然後再轉換成a的型態double,所以才會WA。

如果是我的話,我會盡量避免浮點,會想要寫成if(total>59*n)這種方式。

 
#29147: Re:我有個疑問


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a148. You Cannot Pass?! | From: [39.10.69.232] | 發表日期 : 2022-02-01 18:41


a=total/n;


因為如果total和n都是int,就會進行整數除法,結果會是整數,然後再轉換成a的型態double,所以才會WA。

如果是我的話,我會盡量避免浮點,會想要寫成if(total>59*n)這種方式。


如果要除的話,可以先將其中一個值轉成double,例如:

a=(double)total/n

 
ZeroJudge Forum