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