私はcs50xをやっていて、私の仕事で困っています。私は変更を返すために必要な硬貨を最小限に抑えるアルゴリズムを作成することになっています。例えば0.41ドルは4コイン、0.25ドル、2ドル、(0.10)、そして1セント(0.01ドル)です。何らかの理由でこのアルゴリズムが機能していない(コインの数が間違っています)アウト理由:私は、コードを実行したとの回答は4ことになっているとき、私は3枚のコインを持って、支払うべき金額として0.41を使用C - 私の欲張りアルゴリズムが動作していません。CS50x
#include <stdio.h>
#include <cs50.h>
int Coins;
float Owed;
int main(void)
{
printf("How much is owed?\n");
Owed = GetFloat();
while (Owed < 0)
{
printf("A positive number please");
Owed = GetFloat();
}
if (Owed >= 0.25)
{
while (Owed >=0.25)
{
Owed = Owed - 0.25;
Coins++;
}
}
if (Owed >= 0.1)
{
while (Owed >=0.1)
{
Owed = Owed - 0.1;
Coins++;
}
}
if (Owed >= 0.05)
{
while (Owed >=0.05)
{
Owed = Owed - 0.05;
Coins++;
}
}
if (Owed >= 0.01)
{
while (Owed >= 0.01)
{
Owed = Owed - 0.01;
Coins++;
}
}
printf("%d",Coins);
}
:
デバッガの使用方法と、変数とその値を監視しながらコードを1行ずつ進める方法を学びます。 –
各コインの値をループするのではなく、モジュロ算術を使用してみませんか? – Chimera