#20514: WA(line:79)


t855000@gmail.com (回來電你們)

學校 : 國立內壢高級中學
編號 : 106573
來源 : [123.241.221.152]
最後登入時間 :
2021-01-09 00:28:33
d140. On Sale -- 章魚教學網站-97學年度程設馬拉松賽 | From: [59.102.190.59] | 發表日期 : 2020-02-01 16:11

#include <iostream>
#include <iomanip>
#include<math.h>

using namespace std;

int main()
{
    double money = 0;

    while(cin>>money)
    {
        cout << fixed << setprecision(3);
        money = money*100;
        if(money<=10000)
        {
            money = money*9/10+800;
            cout << '$' << floor (money)/100 << endl;
        }
        elseif(money<=50000)
        {
            money = money*8/10;
            cout << '$' << floor (money)/100 << endl;
        }
        else
        {
            money = money*6/10;
            cout << '$' << floor (money)/100 << endl;
        }
    }
    return0;
}
 
用了floor函數還是錯誤==
 
#20531: Re:WA(line:79)


tommy123234345456567@gmail.com (星雨)

學校 : 國立內壢高級中學
編號 : 111941
來源 : [116.241.253.53]
最後登入時間 :
2023-01-26 21:21:44
d140. On Sale -- 章魚教學網站-97學年度程設馬拉松賽 | From: [111.248.14.253] | 發表日期 : 2020-02-04 01:47

#include
#include
#include

using namespace std;

int main()
{
    double money = 0;

    while(cin>>money)
    {
        cout << fixed << setprecision(3);
        money = money*100;
        if(money<=10000)
        {
            money = money*9/10+800;
            cout << '$' << floor (money)/100 << endl;
        }
        elseif(money<=50000)
        {
            money = money*8/10;
            cout << '$' << floor (money)/100 << endl;
        }
        else
        {
            money = money*6/10;
            cout << '$' << floor (money)/100 << endl;
        }
    }
    return0;
}
 
用了floor函數還是錯誤==

因為你在前面的計算已經先做了乘除 那個時候數字就開始不精確了

double還是會有很些微的誤差值 所以你做折扣後就會差個0.01

這個時候向下取整也沒有用

 
#20554: Re:WA(line:79)


t855000@gmail.com (回來電你們)

學校 : 國立內壢高級中學
編號 : 106573
來源 : [123.241.221.152]
最後登入時間 :
2021-01-09 00:28:33
d140. On Sale -- 章魚教學網站-97學年度程設馬拉松賽 | From: [59.102.190.59] | 發表日期 : 2020-02-06 13:06

#include
#include
#include

using namespace std;

int main()
{
    double money = 0;

    while(cin>>money)
    {
        cout << fixed << setprecision(3);
        money = money*100;
        if(money<=10000)
        {
            money = money*9/10+800;
            cout << '$' << floor (money)/100 << endl;
        }
        elseif(money<=50000)
        {
            money = money*8/10;
            cout << '$' << floor (money)/100 << endl;
        }
        else
        {
            money = money*6/10;
            cout << '$' << floor (money)/100 << endl;
        }
    }
    return0;
}
 
用了floor函數還是錯誤==

因為你在前面的計算已經先做了乘除 那個時候數字就開始不精確了

double還是會有很些微的誤差值 所以你做折扣後就會差個0.01

這個時候向下取整也沒有用

哥 你真厲害

 
ZeroJudge Forum