1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [音乐播放] 3 00:00:11,431 --> 00:00:12,500 >> ROB BOWDEN:你好。 4 00:00:12,500 --> 00:00:13,230 我抢。 5 00:00:13,230 --> 00:00:15,080 并让我们贪婪。 6 00:00:15,080 --> 00:00:18,560 >> 所以,首先我们需要做的 究竟是如何询问用户 7 00:00:18,560 --> 00:00:20,500 太大的变化是欠。 8 00:00:20,500 --> 00:00:23,310 所以在这里,我们看到我们有 一个do / while循环。 9 00:00:23,310 --> 00:00:26,650 我们正在制定计 等于GetFloat。 10 00:00:26,650 --> 00:00:27,890 什么是GetFloat? 11 00:00:27,890 --> 00:00:30,700 它在功能之一 CS50库,得到了 12 00:00:30,700 --> 00:00:32,450 浮来自用户。 13 00:00:32,450 --> 00:00:35,200 记住,为了使用该功能, 我们需要包括散列 14 00:00:35,200 --> 00:00:37,790 CS50.h在顶部。 15 00:00:37,790 --> 00:00:42,310 >> 所以一旦我们有了这个值从 用户,我们还需要确保 16 00:00:42,310 --> 00:00:43,560 这是一个有效的值。 17 00:00:43,560 --> 00:00:46,050 我们不能欠负钱。 18 00:00:46,050 --> 00:00:48,460 所以这就是目的 这点做的/ while循环。 19 00:00:48,460 --> 00:00:52,420 我们继续循环,同时美元 小于零。 20 00:00:52,420 --> 00:00:56,960 和一个do / while循环是正确的事情 用在这里,因为我们需要问的 21 00:00:56,960 --> 00:01:00,290 用户至少一次对如何 多少钱是欠。 22 00:01:00,290 --> 00:01:05,040 >> 所以一旦我们有一些美元, 我们在这里看到我们有整型仙 23 00:01:05,040 --> 00:01:08,630 等于一轮美元时代 CENTS_PER_DOLLAR。 24 00:01:08,630 --> 00:01:10,740 在顶部,我们看到, CENTS_PER_DOLLAR是 25 00:01:10,740 --> 00:01:13,750 明智地定义为100。 26 00:01:13,750 --> 00:01:16,270 那么,什么是这条线在做什么? 27 00:01:16,270 --> 00:01:21,200 >> 好吧,如果你还记得,浮点 价值观是不太准确的。 28 00:01:21,200 --> 00:01:25,470 不同于整数,我们不能代表 浮点值完全相同。 29 00:01:25,470 --> 00:01:28,660 总有某种 的不精确性。 30 00:01:28,660 --> 00:01:32,840 因此,我们更愿意与刚刚整数合作 贯穿这一问题。 31 00:01:32,840 --> 00:01:42,690 这里,如果用户输入的3.42美元, 我们正在转换,为342美分, 32 00:01:42,690 --> 00:01:45,900 舍入,刚刚摆脱的 任何不准确的。 33 00:01:45,900 --> 00:01:49,940 >> 所以一旦我们有仙数 一个整数,我们可以继续 34 00:01:49,940 --> 00:01:51,730 其余的程序。 35 00:01:51,730 --> 00:01:55,910 我们在这里看到,我们正在申报整数 硬币的,我们只使用 36 00:01:55,910 --> 00:01:59,560 以保持总的轨道 硬币的数目。 37 00:01:59,560 --> 00:02:01,590 在这里,我们有我们的第一个while循环。 38 00:02:01,590 --> 00:02:06,780 >> 我们看到虽然美分大于或 等于四分之一,这上面,是哈希 39 00:02:06,780 --> 00:02:14,680 定义为25,而这是真的,我们 想要增加我们的硬币数 40 00:02:14,680 --> 00:02:18,350 和按季度递减美分。 41 00:02:18,350 --> 00:02:22,810 请记住,此语法 等效于分 42 00:02:22,810 --> 00:02:26,020 等于美分减去四分之一。 43 00:02:26,020 --> 00:02:28,170 那些是相同的。 44 00:02:28,170 --> 00:02:31,850 >> 那么,什么是这个while循环在做什么? 45 00:02:31,850 --> 00:02:39,260 这里的想法是,如果我知道3.42美元 欠,我可以继续给 46 00:02:39,260 --> 00:02:42,670 宿舍,直到我不能给 宿舍了。 47 00:02:42,670 --> 00:02:47,720 我不能给任何四分之三以上, 一旦我给3.25美元。 48 00:02:47,720 --> 00:02:53,300 >> 那么,曾经是那样的话,我们会 打破这个while循环。 49 00:02:53,300 --> 00:02:57,650 仙将在17美分留。 50 00:02:57,650 --> 00:03:01,910 我们会继续到下一个 while循环在这里我们说的,而仙 51 00:03:01,910 --> 00:03:04,270 大于或等于一角。 52 00:03:04,270 --> 00:03:07,420 >> 现在我们正在做完全相同的 事情我们做的季度情况下, 53 00:03:07,420 --> 00:03:09,010 除非角钱。 54 00:03:09,010 --> 00:03:15,050 因此,与0.17美元,我们将循环,直到我们可以 不再给一毛钱,这是 55 00:03:15,050 --> 00:03:16,680 一次。 56 00:03:16,680 --> 00:03:20,470 然后我们会留下7美分。 57 00:03:20,470 --> 00:03:24,730 >> 然后,我们将继续为镍,其中 将循环,直到我们不能给 58 00:03:24,730 --> 00:03:29,420 任何更多的镍,这将 留给我们的两分钱。 59 00:03:29,420 --> 00:03:34,400 然后,向下在下面,我们也 便士,这将循环和意志 60 00:03:34,400 --> 00:03:37,140 最后留给我们的零美分。 61 00:03:37,140 --> 00:03:41,670 那么,在年底,我们只需要 打印出我们的硬币数量。 62 00:03:41,670 --> 00:03:44,980 >> 所以,这个方案是完全正确的。 63 00:03:44,980 --> 00:03:47,310 但是,我们其实可以做的更好一点。 64 00:03:47,310 --> 00:03:52,660 现在,如果我说,我欠你一万元 你不应该需要去这里有一个 65 00:03:52,660 --> 00:03:55,310 季度,两个季度,三季度。 66 00:03:55,310 --> 00:03:59,450 你应该马上知道 我欠你40,000宿舍。 67 00:03:59,450 --> 00:04:04,070 >> 现在,让我们来看看一个程序, 处理它好一点。 68 00:04:04,070 --> 00:04:07,190 在这个版本中的东西,我们仍然需要 索要的金额用户 69 00:04:07,190 --> 00:04:10,930 改变,他们希望在完全相同 我们之前也做了同样的方式。 70 00:04:10,930 --> 00:04:14,110 我们需要四舍五入它的确切 途中我们以前那样。 71 00:04:14,110 --> 00:04:17,910 我们仍然有我们的硬币整数 宣布完全和以前一样。 72 00:04:17,910 --> 00:04:21,399 >> 因此,这里是那里的东西 会有点不同。 73 00:04:21,399 --> 00:04:24,640 我们正在做的硬币加上等号 仙按季度划分 74 00:04:24,640 --> 00:04:27,140 其中四分之一是25。 75 00:04:27,140 --> 00:04:31,790 这有什么要说的是,把尽可能多的 宿舍为可以进入美分,并添加 76 00:04:31,790 --> 00:04:33,030 该硬币。 77 00:04:33,030 --> 00:04:40,100 >> 所以,如果仙是142,142分 25给我们5。 78 00:04:40,100 --> 00:04:43,950 请记住,整数除法 自动截断。 79 00:04:43,950 --> 00:04:46,870 因此,我们正在做的硬币加等于5。 80 00:04:46,870 --> 00:04:51,850 >> 紧接着,我们在说 美分等于美分MOD季度。 81 00:04:51,850 --> 00:04:57,150 请记住,MOD经营者给 我们相除后的余数。 82 00:04:57,150 --> 00:05:05,840 所以142 MOD季度,这将使 是142减去125,它是17。 83 00:05:05,840 --> 00:05:10,470 这之后的余 做142除以25。 84 00:05:10,470 --> 00:05:13,040 >> 所以,现在美分等于17。 85 00:05:13,040 --> 00:05:16,080 和我们做同样的确切 对于助攻的事情。 86 00:05:16,080 --> 00:05:18,620 17除以10将给我们1。 87 00:05:18,620 --> 00:05:20,150 我们添加到硬币。 88 00:05:20,150 --> 00:05:25,380 然后我们更新美分,至 是17模10,它是7。 89 00:05:25,380 --> 00:05:27,200 >> 然后相同的镍。 90 00:05:27,200 --> 00:05:29,180 7除以5是1。 91 00:05:29,180 --> 00:05:30,880 补充一点,到硬币。 92 00:05:30,880 --> 00:05:34,600 然后7模5是2。 93 00:05:34,600 --> 00:05:35,910 这就是我们美分。 94 00:05:35,910 --> 00:05:39,065 >> 然后,挣点小钱,没有真正的 点分割或改装,因为, 95 00:05:39,065 --> 00:05:42,170 如果我们有0.2美元遗留下来的,我们可以 只是马上补充说,到 96 00:05:42,170 --> 00:05:43,590 我们的硬币数量。 97 00:05:43,590 --> 00:05:48,210 最后,我们需要打印出我们的 硬币的数目和任选 98 00:05:48,210 --> 00:05:52,100 返回0,在我们节目的最后 来表示一切正常。 99 00:05:52,100 --> 00:05:53,120 >> 我的名字是罗布。 100 00:05:53,120 --> 00:05:54,020 这是贪婪的。 101 00:05:54,020 --> 00:05:57,620 >> [音乐播放] 102 00:05:57,620 --> 00:06:01,515