返回 動漫遊戲

電腦 / 請問一個c++運算子與運算式的問題

老師每次出的題目總會有一題想不出來
只好上來找高手幫忙了
請問以下題目,它該怎麼寫才好?
一停車場的費率如下:
        兩小時內,每半小時收費30元
        超過兩小時但未滿四小時的部份,每半小時收費40元
        超過四小時的部份,每半小時收費60元
        未滿半小時均以半小時計費,請設計一程式可輸入停車時數後算出所需的停車費後顯示在螢幕上。
這一題我一點概念或是說邏輯都沒有,完全不知該如何下手
能否解說一下這一題到底是什麼意思啊
  • 請問輸入的形式是什麼?

    1)  3:27  ~  5:09

    2)  135  分鐘

    3)  2.7  小時

  • 努力學程式
    努力學程式
    謝謝老頑童
    輸入形式是
    3)2.7小時這種
  • #include  <iostream>
    using  namespace  std;

    void  main()
    {
    int  iUnit  =  0;
    double  fHr;
    int  iMoney  =  0;

    xRetry:
    cout  <<  "輸入停車時數:  ";

    cin  >>  fHr;

    if(fHr  <=  0)  {
    cout  <<  endl;
    goto  xRetry;
    }

    iUnit  =  static_cast<int>(fHr  *  10)  /  5
    +  (static_cast<int>(fHr  *  10)  %  5  ?  1  :  0);

    if(iUnit  <=  4)  {
    iMoney  =  iUnit  *  30;
    }
    else  if(iUnit  <=  8  &&  iUnit  >  4)  {
    iMoney  =  (iUnit  -4)  *  40  +  4  *  30;
    }
    else  if(iUnit  >  8)  {
    iMoney  =  (iUnit-  8)  *  60  +  4  *  40  +  iUnit  *  30;
    }

    cout  <<  "收費  "  <<  iMoney  <<  "  元"  <<  endl;

    goto  xRetry;
    }
  • 抱歉,剛才有一行寫錯!
  • #include  <iostream>
    using  namespace  std;

    void  main()
    {
    int  iUnit  =  0;
    double  fHr;
    int  iMoney  =  0;

    xRetry:
    cout  <<  "輸入停車時數:  ";

    cin  >>  fHr;

    if(fHr  <=  0)  {
    cout  <<  endl;
    goto  xRetry;
    }

    iUnit  =  static_cast<int>(fHr  *  10)  /  5
    +  (static_cast<int>(fHr  *  10)  %  5  ?  1  :  0);

    if(iUnit  <=  4)  {
    iMoney  =  iUnit  *  30;
    }
    else  if(iUnit  <=  8  &&  iUnit  >  4)  {
    iMoney  =  (iUnit  -4)  *  40  +  4  *  30;
    }
    else  if(iUnit  >  8)  {
    iMoney  =  (iUnit-  8)  *  60  +  4  *  40  +  4  *  30;  //  這樣才對.
    }

    cout  <<  "收費  "  <<  iMoney  <<  "  元"  <<  endl;

    goto  xRetry;
    }
  • 程式的輸出結果...



    輸入停車時數:  0.2
    收費  30  元
    輸入停車時數:  0.5
    收費  30  元
    輸入停車時數:  0.6
    收費  60  元
    輸入停車時數:  1
    收費  60  元
    輸入停車時數:  1.1
    收費  90  元
    輸入停車時數:  1.5
    收費  90  元
    輸入停車時數:  1.7
    收費  120  元
    輸入停車時數:  2
    收費  120  元
    輸入停車時數:  2.1
    收費  160  元
    輸入停車時數:  2.5
    收費  160  元
    輸入停車時數:  3
    收費  200  元
    輸入停車時數:  3.4
    收費  240  元
    輸入停車時數:  3.5
    收費  240  元
    輸入停車時數:  4
    收費  280  元
    輸入停車時數:  4.1
    收費  340  元
    輸入停車時數:  4.5
    收費  340  元
    輸入停車時數:
  • 糖糖的幸運
    糖糖的幸運
    天啊~~~看了都傻眼~~

    想當初學這門課時~~真的是要了我的命~~

    因為程式這種東西真不是一般人會的~~

    唸大學4年,我自認我的微積分,工數都學的還不錯~~

    但遇到程式我完全沒辦法~~~~

    所以被當了~~

    哈哈~~~

    真佩服這些高手~~

  • 努力學程式的話:
    我用Dev-c++去編譯時會出現以下錯誤
    `main`  must  return  `int` 
    後來我將void改int就可以了

    這在你的Dev-C++,compiler  options裡可以改變這項設定.

    A:  我記得,main強制int的型是C語言的.
    C++不限制main要什麼型.
    有興趣你可以去翻一下各別的文法書,不過這不是重要的事.


    但是停車時間若輸入0.6就會變成30元
    請問是那裡有問題嗎?

    你是不是用float?
    我是用Visual  C++  2005.
    我一開始是用float,轉型成int後,我也發現同樣的瑕疵.
    所以我後來改用double,就正確了.
    我一步一步追進去,發現如果使用float,
    要是我輸入的是0.5,它在compiler的眼中會變成0.499999.

    要是你的Dev-C++已經是用double仍出問題,
    你可以把double的值先乘10以後做運算,在除回來,就可以克服浮點運算的瑕疵.
  • 對了,我還是沒想出來如何不用  if  寫這個題.
    (可能是我的思路已經僵化了...)
    我直覺知道,不用  if  確實可以寫,
    但是如果沒有  if  的話,會變成刁鑽的數學演算法題,
    而不是簡易的初學者程式碼練習題.

    期待偉大的演算法大師Knuth今晚來託夢,
    給我一點線索.  :p
  • 感謝你的回答剛剛我有留言給你但還是有點小問題
  • 我每次用goto每次被罵
    goto很好用  但不要對它養成習慣
  • 純粉紅色的話:
    我每次用goto每次被罵
    goto很好用  但不要對它養成習慣
    -------------------------------

    我以前在唸書的時候,
    支持使用goto的,和反對使用goto的,
    兩派意見的書我都有唸過,
    各自有他們的主張與堅持.

    不過,我自己的看法是,
    有什麼東西可以用,就充分利用.
    既然C++提供goto,不用它的話,實在對不起它.

    其實goto就是接近組合語言的JMP之類的指令,
    有些狀況使用goto,可以少寫很多迴圈,
    可以省掉一兩個大括號.

    反對的人之所以反對,是因為goto跳得太遠,
    害他們讀程式碼的時候,找不到路!

    所以我們就不要goto太遠.
  • 是滴  我懂你的意思
    我也很愛goto  loop可以簡化
    but  it`s  again  most  style  guides
    工作用  code  review會叫你拿掉
    學校用  老師會扣你分  他們才不管勒
    不知道是不是我們比較嚴
    but  they  call  it  "enforing  good  style  practice"
  • 想學會程式的人的話:
    感謝你的回答剛剛我有留言給你但還是有點小問題
    ---------------------------------------

    你們班是使用  Dev  C++  4  還是  Dev  C++  5  啊?
    有空我也來安裝一個,看看它的浮點運算是什麼問題好了.
  • 純粉紅色的話:
    是滴  我懂你的意思
    我也很愛goto  loop可以簡化
    but  it`s  againt  most  style  guides
    工作用  code  review會叫你拿掉
    學校用  老師會扣你分  他們才不管勒
    不知道是不是我們比較嚴
    but  they  call  it  "enforing  good  style  practice"
    --------------------------------

    但是,你們寫韌體,不是講求精簡,節省資源嗎?
  • 努力學程式的話:
    謝謝你的程式碼
    我用Dev-c++去編譯時會出現以下錯誤
    `main`  must  return  `int`
    後來我將void改int就可以了
    但是停車時間若輸入0.6就會變成30元
    請問是那裡有問題嗎?
    ------------------------------

    我安裝了Dev  C++  4,
    輸入0.6,程式的執行結果是正確的(60元).

    你的CPU是Intel  Celeron(賽揚)嗎?
回應...
 返回 動漫遊戲