#3624: 請問問題出在哪


boy10016863 (慢慢)

學校 : 國立臺東大學
編號 : 10965
來源 : [61.224.11.227]
最後登入時間 :
2020-03-01 14:41:56
d223. 10137 - The Trip -- UVa10137 | From: [210.240.176.185] | 發表日期 : 2010-04-10 14:25

我自己用DEV C++ 第2個測點是11.99沒錯 但是放上來就變成12了

程式碼如下

#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;

int main(int argc, char *argv[])
{
 int i,n,j,flag=0;
 float x;
 double a[1000],sum=0,ans=0;
 while(cin >> n){
   if(n==0){
     break;}
   else{
      for(i=0;i<n;i++){
         cin >> a[i];}
      for(j=0;j<n-1;j++){
         x=a[j]-a[j+1];
         x=x*100;
         if(x==1||x==-1)
           flag=1;
         else
           flag=0;}
      if(flag==1){
         for(i=0;i<n;i++){
            sum+=int(a[i]);}
         }
      else{
         for(i=0;i<n;i++){
            sum+=a[i];}
         }
      sum=sum/n;
      for(i=0;i<n;i++){
         if(a[i]<sum)
           ans+=sum-a[i];}
      cout << "$" << fixed << setprecision(2) << ans << endl;
      sum=0;ans=0;}}
}

 
#25485: Re:請問問題出在哪


allllllan123456 (God of Computer Science)

學校 : 國立臺灣大學
編號 : 13732
來源 : [140.109.20.138]
最後登入時間 :
2021-07-08 17:41:52
d223. 10137 - The Trip -- UVa10137 | From: [111.242.211.59] | 發表日期 : 2021-05-24 22:49

老掉牙了,浮點數精度問題,先同乘以 100 轉成整數之後就沒錯了。

 
ZeroJudge Forum