1 00:00:00,000 --> 00:00:00,982 2 00:00:00,982 --> 00:00:11,293 >> [音乐播放] 3 00:00:11,293 --> 00:00:13,580 >> ROB BOWDEN:是我,罗布。 4 00:00:13,580 --> 00:00:16,540 让我们看一下如何 实施马里奥。 5 00:00:16,540 --> 00:00:21,040 因此,我们需要做的第一件事是 提示该用户输入。 6 00:00:21,040 --> 00:00:24,440 >> 我们要问,他们究竟是如何 高大的金字塔应该是。 7 00:00:24,440 --> 00:00:27,110 所以在这里,我们看到了我们正在做的 高度=调用getInt。 8 00:00:27,110 --> 00:00:32,479 一个记住,调用getInt函数 在CS50实施 9 00:00:32,479 --> 00:00:38,060 库,所以往上顶,我们需要 记得#包括cs50.h. 10 00:00:38,060 --> 00:00:41,360 >> 那么,为什么我们有这个包裹 在一个do-whil​​e循环? 11 00:00:41,360 --> 00:00:45,080 好了,我们还需要记住, 用户的输入必须是有效的。 12 00:00:45,080 --> 00:00:46,910 什么是无效的输入? 13 00:00:46,910 --> 00:00:51,460 以及pset的规范特别说 该高度小于0或大于 14 00:00:51,460 --> 00:00:54,530 超过23是无效的。 15 00:00:54,530 --> 00:00:59,030 >> 所以在这里,我们看到,我们定义 一个叫做MAX_HEIGHT与恒定 16 00:00:59,030 --> 00:01:00,750 23的值。 17 00:01:00,750 --> 00:01:06,380 这do-whil​​e循环将继续,而 高度小于0或MAX_HEIGHT是 18 00:01:06,380 --> 00:01:11,870 小于高度,这意味着 图23是小于高度。 19 00:01:11,870 --> 00:01:15,390 所以,如果高度是24或更大,我们 要继续循环。 20 00:01:15,390 --> 00:01:18,300 记住的do-whil​​e循环是很 帮助每当我们想要得到 21 00:01:18,300 --> 00:01:22,070 用户输入,然后验证它,因为 我们不可避免地需要询问用户在 22 00:01:22,070 --> 00:01:25,010 至少有一次,他们想要的价值。 23 00:01:25,010 --> 00:01:28,500 >> 所以一旦我们有自己的输入,我们 现在可以构建金字塔。 24 00:01:28,500 --> 00:01:31,940 其中一个这个问题的设置技巧是 我们必须开始在顶部 25 00:01:31,940 --> 00:01:32,750 金字塔。 26 00:01:32,750 --> 00:01:36,800 你不能的printf的底部 金字塔,然后建立自己的方式。 27 00:01:36,800 --> 00:01:38,830 所以,让我们来看看这个例子 从pset的规范。 28 00:01:38,830 --> 00:01:41,530 29 00:01:41,530 --> 00:01:45,430 >> 我们在这里看到的,当我们进入一个高度 8,的最底部 30 00:01:45,430 --> 00:01:48,660 金字塔打印9哈希值。 31 00:01:48,660 --> 00:01:52,990 从上一层的打印 一个空格和八个哈希值。 32 00:01:52,990 --> 00:01:58,250 从一个级别是两个空格,然后 7散列,一路直到我们 33 00:01:58,250 --> 00:02:03,050 得到的金字塔,它是顶部 八个级别的了,打印7 34 00:02:03,050 --> 00:02:06,000 空间和两个散列。 35 00:02:06,000 --> 00:02:08,810 所以请记住,我们要 第一个做到这一点的顶级。 36 00:02:08,810 --> 00:02:11,620 37 00:02:11,620 --> 00:02:18,500 >> 这里我们从迭代 顶层,第8行,继续 38 00:02:18,500 --> 00:02:22,150 直到行达到0。 39 00:02:22,150 --> 00:02:25,820 因此,有多少空格都需要 在顶行打印? 40 00:02:25,820 --> 00:02:29,310 我们印刷的7个空格 和两个散列。 41 00:02:29,310 --> 00:02:34,450 因此,我们要的空格数是 那是在零下1行。 42 00:02:34,450 --> 00:02:39,310 >> 如果上面一行是8,8减 1为我们提供了7个空格。 43 00:02:39,310 --> 00:02:43,770 然后,我们有将打印一个循环 出每个空间一次一个。 44 00:02:43,770 --> 00:02:47,450 因此,当位是7时,该环 七次,印刷 45 00:02:47,450 --> 00:02:50,300 七个人的空间。 46 00:02:50,300 --> 00:02:54,672 >> 所以,现在我们需要打印这些哈希 在金字塔的末端。 47 00:02:54,672 --> 00:02:57,930 所以在这里,我们需要计算 哈希值的数量。 48 00:02:57,930 --> 00:03:01,930 我们看到,我们正在做的高度 减排加2。 49 00:03:01,930 --> 00:03:04,170 那么我们是怎么得到的? 50 00:03:04,170 --> 00:03:08,630 >> 请记住,金字塔的顶端 是第8行,高度为8。 51 00:03:08,630 --> 00:03:10,890 我们仍然印两个散列。 52 00:03:10,890 --> 00:03:15,420 因此,在最低限度,8减去8加 2给了我们正确的答案。 53 00:03:15,420 --> 00:03:19,170 再考虑底部 金字塔,排1。 54 00:03:19,170 --> 00:03:24,020 高度减去行会给我们7,和 再加上2给了我们9哈希值, 55 00:03:24,020 --> 00:03:26,620 这正是数 的哈希值,我们印制。 56 00:03:26,620 --> 00:03:29,880 所以这是我们想要的公式 用于计算数 57 00:03:29,880 --> 00:03:32,220 哈希每一行中。 58 00:03:32,220 --> 00:03:36,020 >> 使用这个数字,我们再有另一个 for循环非常相似 59 00:03:36,020 --> 00:03:41,270 for循环,我们使用的空间, 那的哈希次迭代数 60 00:03:41,270 --> 00:03:43,720 每次打印单个散列。 61 00:03:43,720 --> 00:03:46,010 在顶行,那会 打印两个哈希值。 62 00:03:46,010 --> 00:03:48,390 在最后一行,那将 打印9哈希值。 63 00:03:48,390 --> 00:03:52,610 和对方行会打印出每一个 在哈希值之间的数。 64 00:03:52,610 --> 00:03:57,340 >> 然后在最后,我们需要 打印我们的新生产线,以进入下一个 65 00:03:57,340 --> 00:03:59,400 排在金字塔。 66 00:03:59,400 --> 00:04:03,070 最后,我们需要打印新行 在该行以结束 67 00:04:03,070 --> 00:04:06,260 继续下一个 排金字塔。 68 00:04:06,260 --> 00:04:08,980 而在我们节目的最后, 我们必须返回0。 69 00:04:08,980 --> 00:04:12,770 >> 由于每pset的规范,返回 0不是绝对必要的。 70 00:04:12,770 --> 00:04:15,710 但它确实表明了主要的做。 71 00:04:15,710 --> 00:04:17,610 我的名字是罗布,这是马里奥。 72 00:04:17,610 --> 00:04:22,470 >> [音乐播放] 73 00:04:22,470 --> 00:04:25,558