>> [音樂播放]
>> 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不是絕對必要的。
但它確實表明了主要的做。
我的名字是羅布，這是馬里奧。
>> [音樂播放]