>> [音乐播放]
>> 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不是绝对必要的。
但它确实表明了主要的做。
我的名字是罗布，这是马里奥。
>> [音乐播放]