SOGO論壇
標題:
Dev c++ 高手請進唷
[列印本頁]
作者:
ssk1100
時間:
2010-10-26 19:03:28
標題:
Dev c++ 高手請進唷
使用者輸入金額後能算出應發出多少千元,百元鈔票,五十塊,十塊,一塊硬幣數
這個程式要怎麼打阿
作者:
alphi
時間:
2010-10-26 22:25:02
本帖最後由 alphi 於 2012-1-2 12:38 編輯
基本上這個可以用線性規劃可以進行得到比較好的結果.不過會比較複雜.對於初學者有點難度.
另一種不能保證最佳,但是符合人類經驗.也比較簡單
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int Partition[6]={0,0,0,0,0,0};
int Money=0;
int i;
printf("please input value:");
scanf("%d",&money);
Partition[0]=money/1000; //計算輸入金額可以被多少個1000整除,例如5612/1000=5
money-=(Partition[0]*1000); //等於扣除掉換算的千元 ,例如5612-5000=612
Partition[1]=money/500; //計算可以被幾個500整除,例如612/500=1
money-=Partition[1]*500; //扣除已經計算的500元金額,例如612-500=112
Partition[2]=money/100; //計算可以被幾個100整除,例如112
money-=Partition[2]*100;
Partition[3]=money/50;
money-=Partition[3]*50;
Partition[4]=money/10;
money-=Partition[4]*10;
Partition[5]=money;
for(i=0;i<6;i++)
{
printf("%d\r\n",Partition[i]);
}
}
複製代碼
作者:
alphi
時間:
2010-10-26 22:36:01
忘了補充這個方法就是一般都是由最大的開始找錢或者組合,當不滿足最大時候在找次大,...以此類推
例如 5612,一般人會先找出以下的關係
1000 500 100 50 10 1
5 1 1 0 1 2
作者:
qlfabm2001
時間:
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]))
}
作者:
哇哇哈哈哈
時間:
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;
}
歡迎光臨 SOGO論壇 (https://oursogo.com/)
Powered by OURSOGO.COM