>> [Музыка играет]
>> 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 не является строго обязательным.
Но это означает, что основной делается.
Меня зовут Боб, и это был Марио.
>> [Музыка играет]