[音乐播放] ROB BOWDEN:是我,罗布。 让我们看一下如何 实施马里奥。 因此,我们需要做的第一件事是 提示该用户输入。 我们要问,他们究竟是如何 高大的金字塔应该是。 所以在这里,我们看到了我们正在做的 高度=调用getInt。 一个记住,调用getInt函数 在CS50实施 库,所以往上顶,我们需要 记得#包括cs50.h. 那么,为什么我们有这个包裹 在一个do-whil​​e循环? 好了,我们还需要记住, 用户的输入必须是有效的。 什么是无效的输入? 以及pset的规范特别说 该高度小于0或大于 超过23是无效的。 所以在这里,我们看到,我们定义 一个叫做MAX_HEIGHT与恒定 23的值。 这do-whil​​e循环将继续,而 高度小于0或MAX_HEIGHT是 小于高度,这意味着 图23是小于高度。 所以,如果高度是24或更大,我们 要继续循环。 记住的do-whil​​e循环是很 帮助每当我们想要得到 用户输入,然后验证它,因为 我们不可避免地需要询问用户在 至少有一次,他们想要的价值。 所以一旦我们有自己的输入,我们 现在可以构建金字塔。 其中一个这个问题的设置技巧是 我们必须开始在顶部 金字塔。 你不能的printf的底部 金字塔,然后建立自己的方式。 所以,让我们来看看这个例子 从pset的规范。 我们在这里看到的,当我们进入一个高度 8,的最底部 金字塔打印9哈希值。 从上一层的打印 一个空格和八个哈希值。 从一个级别是两个空格,然后 7散列,一路直到我们 得到的金字塔,它是顶部 八个级别的了,打印7 空间和两个散列。 所以请记住,我们要 第一个做到这一点的顶级。 这里我们从迭代 顶层,第8行,继续 直到行达到0。 因此,有多少空格都需要 在顶行打印? 我们印刷的7个空格 和两个散列。 因此,我们要的空格数是 那是在零下1行。 如果上面一行是8,8减 1为我们提供了7个空格。 然后,我们有将打印一个循环 出每个空间一次一个。 因此,当位是7时,该环 七次,印刷 七个人的空间。 所以,现在我们需要打印这些哈希 在金字塔的末端。 所以在这里,我们需要计算 哈希值的数量。 我们看到,我们正在做的高度 减排加2。 那么我们是怎么得到的? 请记住,金字塔的顶端 是第8行,高度为8。 我们仍然印两个散列。 因此,在最低限度,8减去8加 2给了我们正确的答案。 再考虑底部 金字塔,排1。 高度减去行会给我们7,和 再加上2给了我们9哈希值, 这正是数 的哈希值,我们印制。 所以这是我们想要的公式 用于计算数 哈希每一行中。 使用这个数字,我们再有另一个 for循环非常相似 for循环,我们使用的空间, 那的哈希次迭代数 每次打印单个散列。 在顶行,那会 打印两个哈希值。 在最后一行,那将 打印9哈希值。 和对方行会打印出每一个 在哈希值之间的数。 然后在最后,我们需要 打印我们的新生产线,以进入下一个 排在金字塔。 最后,我们需要打印新行 在该行以结束 继续下一个 排金字塔。 而在我们节目的最后, 我们必须返回0。 由于每pset的规范,返回 0不是绝对必要的。 但它确实表明了主要的做。 我的名字是罗布,这是马里奥。 [音乐播放]