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