SOGO論壇
  登入   註冊   找回密碼
查看: 1150|回覆: 4
列印 上一主題 下一主題

[問題求助] Dev c++ 高手請進唷 [複製連結]

Rank: 2

狀態︰ 離線
跳轉到指定樓層
1
發表於 2010-10-26 19:03:28 |只看該作者 |倒序瀏覽
使用者輸入金額後能算出應發出多少千元,百元鈔票,五十塊,十塊,一塊硬幣數
這個程式要怎麼打阿
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 5Rank: 5

數位軟體勳章

狀態︰ 離線
2
發表於 2010-10-26 22:25:02 |只看該作者
本帖最後由 alphi 於 2012-1-2 12:38 編輯

基本上這個可以用線性規劃可以進行得到比較好的結果.不過會比較複雜.對於初學者有點難度.

另一種不能保證最佳,但是符合人類經驗.也比較簡單
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(void)
  4. {
  5. int Partition[6]={0,0,0,0,0,0};
  6. int Money=0;
  7. int i;

  8. printf("please input value:");
  9. scanf("%d",&money);

  10. Partition[0]=money/1000; //計算輸入金額可以被多少個1000整除,例如5612/1000=5
  11. money-=(Partition[0]*1000); //等於扣除掉換算的千元 ,例如5612-5000=612

  12. Partition[1]=money/500; //計算可以被幾個500整除,例如612/500=1
  13. money-=Partition[1]*500; //扣除已經計算的500元金額,例如612-500=112

  14. Partition[2]=money/100; //計算可以被幾個100整除,例如112
  15. money-=Partition[2]*100;

  16. Partition[3]=money/50;
  17. money-=Partition[3]*50;

  18. Partition[4]=money/10;
  19. money-=Partition[4]*10;

  20. Partition[5]=money;

  21. for(i=0;i<6;i++)
  22. {
  23.      printf("%d\r\n",Partition[i]);
  24. }

  25. }
複製代碼
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您 ...

總評分: 威望 + 2   查看全部評分

Rank: 5Rank: 5

數位軟體勳章

狀態︰ 離線
3
發表於 2010-10-26 22:36:01 |只看該作者
忘了補充這個方法就是一般都是由最大的開始找錢或者組合,當不滿足最大時候在找次大,...以此類推

例如 5612,一般人會先找出以下的關係

1000 500 100 50 10 1
  5     1     1   0   1  2

Rank: 2

狀態︰ 離線
4
發表於 2010-12-1 12:52:48 |只看該作者
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int Partition[5]={0,0,0,0,0};
int Money=0;
int i;

printf("please input value:");
scanf("%d",&money);

  for(i=4,i>=0;i--){
    Partition = money % 10;
    money=money/10;
  }
  
  printf("%d,10000\n",Partition[0]);
  printf("%d,1000\n"  ,Partition[1]);
  printf("%d,100\n"    ,Partition[2]);
  printf("%d,10\n"      ,Partition[3]);
  printf("%d,1\n"       ,Partition[4]))
}
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您 ...

總評分: 威望 + 2   查看全部評分

Rank: 2

狀態︰ 離線
5
發表於 2011-9-10 02:09:31 |只看該作者
        int money[5]={1000, 100, 50, 10, 1};
        int num[5]={0};
        int i=0, n;
        cin>>n;
        while(n>0)
        {
                if(n>=money[i])
                {
                        n=n-money[i];
                        num[i]=num[i]+1;
                }
                else
                {
                        i=i+1;
                }
        }
        for(i=0;i<5;i++)
        {
                cout<<money[i]<<" : "<<num[i]<<endl;
        }
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 2   查看全部評分

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2025-5-16 06:45

© 2004-2025 SOGO論壇 OURSOGO.COM
回頂部