私が利用できる請求書のタイプは、$ 1、$ 5、$ 10、$ 20、$ 50、$ 100の変更を計算する関数を作成しています。各金種はまた、現時点で引き出し内にある有価証券番号から差し引かれます。有限単位の計算の変更
ここで扱うペニー、ニッケル、ダイムまたは四半期はありません。ドル金額のみです。
これは私が思い付いたものです。これ以上の法案はすべての宗派のための引き出しの中に存在しない場合
機能は現在、エラー処理のための補正は、ユーザーが付属されてい
UPDATE引き出しのためのより多くのお金を得るためのメッセージ。 arasmussenの値の補正から
// Set elsewhere in the program
int numberOnesLeft;
int numberFivesLeft;
int numberTensLeft;
int numberTwentiesLeft;
int numberFiftiesLeft;
int numberHundredsLeft;
int numberOfOnes = 0;
int numberOfFives = 0;
int numberOfTens = 0;
int numberOfTwenties = 0;
int numberOfFifties = 0;
int numberOfHundreds = 0;
void CalculateChange(float amount)
{
char tempStr[128];
while(amount >= 100.0)
{
if(numberOfHundreds >= numberHundredsLeft)
break;
else
amount = amount - 100.0;
numberOfHundreds++;
}
while(amount >= 50.0)
{
if(numberOfFifties >= numberFiftiesLeft)
break;
else
amount = amount - 50.0;
numberOfFifties++;
}
while(amount >= 20.0)
{
if(numberOfTwenties >= numberTwentiesLeft)
break;
else
amount = amount - 20.0;
numberOfTwenties++;
}
while(amount >= 10.0)
{
if(numberOfTens >= numberTensLeft)
break;
else
amount = amount - 10.0;
numberOfTens++;
}
while(amount >= 5.0)
{
if(numberOfFives >= numberFivesLeft)
break;
else
amount = amount - 5.0;
numberOfFives++;
}
while(amount >= 1.0)
{
if(numberOfOnes >= numberOnesLeft)
break;
else
amount = amount - 1.0;
numberOfOnes++;
}
if(amount > 0)
{
printf("You are still owed: $");
sprintf(tempStr, "%.2f", amount);
printf(tempStr);
printf("\n\n");
printf("Please obtain more money for the drawer\n");
}
}
、このビッグOは、O(X * nは)×*のO(N)= x
がある金種の数であり、O(N)=です。
各金種を計算するためのアルゴリズム的に高速な方法はありますか?
[これは助けですか?](http://en.wikipedia.org/wiki/Change-making_problem) – Pubby
この宿題はありますか?その場合は、宿題タグでタグ付けしてください。 –
これは宿題ではありません。 – NexAddo