gpt4 book ai didi

CS50 pset1 贪婪挑战

转载 作者:行者123 更新时间:2023-11-30 15:00:13 24 4
gpt4 key购买 nike

我有点羞于在这里问这个愚蠢的问题,但事实是,我已经尝试了一切,但我仍然看不出错误在哪里。

对于编程来说,我是 101% 的菜鸟,而且我已经报名参加了 CS50。我试图充分利用它,所以我总是接受不太舒服的挑战,以便尝试和学到最多的东西。

我已经完成了 CS50 的 pset1 中贪婪挑战的代码。我绞尽脑汁,只为了让代码尽可能好、干净、简单,但每次我检查代码时,我总是收到一个错误提示。

特此附上代码检查和我的书面代码:

通过CS50终端脚本检查代码:

:)greedy.c 存在
:) gredy.c 编译
:) 输入 0.41 产生输出 4
:) 输入 0.01 产生输出 1
:) 输入 0.15 产生输出 2
:) 输入 1.6 产生输出 7
:( 输入 23 产生输出 92
\预期输出,但不是“94\n”
:) 输入 4.2 产生输出 18
:) 拒绝像 -.1 这样的负输入
:) 拒绝“foo”的非数字输入
:) 拒绝非数字输入“”

这是我的代码:

#include <stdio.h>
#include <cs50.h>
#include <math.h>

float change;

int coins = 0;
int quantity;

int main (void)
{
do
{
printf("O hai! How much change is owed?\n");
change = get_float();
}
while (change < 0);



//converting float change (dollars) into integer change (cents)

quantity = round(change * 100.00);



while (quantity > 25) //This runs as long as quantity left is bigger than a quarter coin
{
quantity -= 25;
coins++;
}
while (quantity >= 10) //This runs as long as quantity left is bigger than a dime coin
{
quantity -= 10;
coins++;
}
while (quantity >= 5) //This runs as long as quantity left is bigger than a nickel coin
{
quantity -= 5;
coins++;
}
while (quantity >= 1) //This runs as long as quantity left is bigger than 0
{
quantity -= 1;
coins++;
}


printf("%i\n", coins);
}`

免责声明:我想指出,我完全了解哈佛的诚实守则。我并不是想找到一个简单的解决方案来解决问题并摆脱这个挑战。

我希望有人能花点时间写下一个解释,以启发我并帮助我理解代码失败的原因。我不寻求任何答案,如果你不这么认为,也不必指出。我只是一个没有经验的计算机科学初学者,他愿意阅读您所有的答案,并最终理解为什么一些应该有效的东西根本不起作用。

非常感谢您的耐心和时间!

最佳答案

问题出在您的第一个比较中,内容为(quantity > 25)。当您的总金额为 23 美元时,您期望得到 23 * 4 = 92 个硬币

但是,当您减去其中的 91 个季度时,您最终会得到 (quantity == 25) 并且检查失败(因为 quantity 不再是>严格大于25,但等于它),将您插入 2 个一角硬币,然后进入最后一个五分硬币,使其显示为 94 个硬币。

解决方法是(您现在应该已经猜到了)将该检查替换为 (quantity >= 25)

关于CS50 pset1 贪婪挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42256121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com