>> [Музика грає]
>> ROB BOWDEN: Це я, Роб.
Давайте розглянемо хау для реалізації Маріо.
Тому перше, що ми повинні зробити, це запропонує користувачеві для входу.
>> Ми повинні запитати їх, як саме високий піраміда повинна бути.
Так от, ми бачимо, що ми робимо Висота = GetInt.
І пам'ятайте, що функція GetInt реалізується в CS50
бібліотека, так нагорі, ми повинні не забудьте # включають cs50.h.
>> Так чому ми повинні це загорнуті в зроби час циклу?
Ну, ми також повинні пам'ятати, що введення користувача повинен бути дійсним.
Що є неприпустимим вхід?
Ну PSET специфікації зокрема, йдеться що висота менше 0 або більше
ніж 23 є недійсним.
>> Так тут, ми бачимо, що ми визначаємо постійна називається MAX_HEIGHT з
значення 23.
Це робити-поки петля буде продовжувати час висота менше 0 або MAX_HEIGHT є
менше, ніж висота, тобто 23 менше, ніж висота.
Так що, якщо висота становить 24 або більше, ми збирається продовжити цикл.
Пам'ятайте, що робити-то час петлі досить корисними, коли ми хочемо отримати
користувальницький введення, а потім перевірити його, так як ми неминуче повинні запитати користувача на
хоча б один раз для значення вони хочуть.
>> Тому, як тільки у нас є свій вклад, ми тепер можна побудувати піраміду.
Одна з вивертів цієї проблеми є діяльність що ми повинні почати у верхній частині
піраміда.
Ви не можете Printf дно піраміда, а потім побудувати свій шлях.
Отже, давайте подивимося на прикладі від PSet спец.
>> Ми бачимо тут, що, коли ми входимо у висоту 8, на саме дно
піраміда друкує дев'ять хешей.
На рівень вище від відбитків один пробіл і вісім хеши.
На рівень вище від тобто два простору і не сім хеши, всю дорогу, поки ми
дістатися до вершини піраміди, яка є вісім рівнів вгору, який друкує сім
простору і два хешей.
Так що пам'ятайте, що ми повинні зробити це верхній рівень в першу чергу.
>> Тут ми ітерації від верхнього рівня, ряд 8, продовжуючи
поки рядок не досягне 0.
Так скільки прогалин чи потрібна нам друкувати в цьому верхньому ряду?
Ми надрукували сім просторів і два хешей.
Таким чином, кількість просторів ми хочемо, рядок, що були на мінус 1.
>> Якщо верхній рядок 8, 8 мінус 1 дає нам сім місць.
Тоді у нас є цикл, який буде друкувати з кожного простору по одному.
Тому, коли простору є 7, ця петля сім разів, друк
сім окремих просторів.
>> Так що тепер нам потрібно роздрукувати ці хеши в кінці піраміди.
Так от, нам потрібно обчислити кількість хешей.
Ми бачимо, що ми робимо висоту мінус рядок плюс 2.
Так як же ми отримуємо, що?
>> Слід пам'ятати, що вершина піраміди є рядок 8, а висота 8.
І ми як і раніше друкуються два хешей.
Так, принаймні, 8 мінус 8 плюс 2 дає нам правильну відповідь.
І потім розглянути дно піраміди, ряд 1.
Зростання мінус рядок дасть нам 7, і то плюс 2 дає нам дев'ять хешей,
а це саме число з хеш, що ми друкували.
Так це і є формула ми хочемо використовувати для розрахунку кількості
хеши в кожному рядку.
>> За допомогою цього телефону, ми тоді є інший цикл, дуже схоже на
цикл, який ми використовували для просторів, , Який виконує ітерацію кількість хешей раз
Друк одного окрошка кожного разу.
На верхньому ряду, що буду надрукувати два хешей.
На нижньому ряду, що буду роздрукувати дев'ять хешей.
І один з одним ряд друкуватиме кожен кількість модулів, між ними.
>> А потім в самому кінці, ми повинні друкувати нашу нову лінію, щоб перейти до наступного
гребти в піраміді.
Нарешті, ми повинні друкувати нову лінію в кінці рядка для того, щоб
перейти до наступного ряд піраміди.
І наприкінці нашої програми, у нас є повернення 0.
>> Відповідно до PSet специфікації, повернення 0 не є строго обов'язковим.
Але це означає, що основною робиться.
Мене звуть Боб, і це був Маріо.
>> [Музика грає]