我一直在谷歌搜索这几天,我迷路了。所以在网上做CS50似乎无法掌握这一轮数字。我的程序搞乱了像 2.10 这样的浮点数和 100 之类的整数,它会输出 209.xxxxxxxx
就像我说的那样,我已经阅读了无数帖子,我应该使用 ceilf 并包含 ,但我收到错误
greedy.c :(。text + 0x74):未定义的引用`ceilf' collect2:错误:ld返回1退出状态make:*** [贪婪]错误1 亚当@贝多芬:〜/项目/原子/ EDX / PSET1 /贪婪$
我看过关于-lm和某个文件的帖子,但如果我说实话,我就不明白这意味着什么。
我绝不是在寻找一个彻底的解决方案,只是在改进方面提供指导。
这是我的代码,可能不像某些人希望的那样精简,但我回到这里的基础;)
Model.update(
{ 'id': 3, 'line_items.id': 12 },
{ $set: {
'line_items.$.review_request_sent': false
}}, function (err, numAffected) { ... }
);
基本上它应该计算出给定数量所需的最少数量的硬币。它适用于大多数情况,直到浮标陷入困境。请原谅我喜欢写的东西,所以我学得更好。
更新尝试使用-lm使用GCC进行编译但仍然失败。 adam @ beethoven:〜/ projects / atom / edx / pSet1 / greedy $ gcc -o foo -lm greedy.c /tmp/cc3qHAK7.o:在函数
#include <stdio.h> #include <math.h> int main() { // Initialize Variables int coinsTotal = 0, quarter = 25, dime = 10, nickel = 5, penny = 1, cents; float changeDue; do { printf("How much change are you owed? (Format = 0.00)($): "); scanf("%f", &changeDue ); // Convert to cents cents = changeDue * 100; } while(cents <= 0); while (cents >= quarter) { cents = cents - quarter; coinsTotal = coinsTotal + 1; } if (cents == 0) { printf("The miminum number of coins is: %d\n", coinsTotal); } else { while (cents >= dime) { cents - dime; coinsTotal = coinsTotal + 1; } if (cents == 0) { printf("The minimum number of coins is: %d\n", coinsTotal); } else { while (cents >= nickel) { cents = cents - nickel; coinsTotal = coinsTotal + 1; } if (cents == 0) { printf("The minimum number of coins is: %d\n", coinsTotal); } else { while (cents >= penny) { cents = cents - penny; coinsTotal = coinsTotal + 1; } if (cents == 0) { printf("The minimum number of coins is: %d\n", coinsTotal); } } } } }
ceilf&#39; collect2:错误:ld返回1退出 状态adam @ beethoven:〜/ projects / atom / edx / pSet1 / greedy $解决方案我没有使用 make 命令,而是使用了gcc并添加了 -lm标志在命令的末尾
main': greedy.c:(.text+0x6e): undefined reference to
答案 0 :(得分:2)
我看过有关-lm和某个文件的帖子,但如果我说实话,我不明白这意味着什么。
您必须链接到数学库才能修复错误。数学函数实现通常作为单独的库(数学库)放置。如果使用gcc
将-lm
添加到链接器命令。
答案 1 :(得分:0)
我认为你想要将浮点数舍入到最接近的整数。 ceilf
不是这样做的,而是四舍五入。您可以使用此宏在可能的情况下舍入到最近的长度:
#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
此外,您收到链接错误,因为您没有与数学库建立链接。例如使用:
gcc greedy.c -lm -o greedy