>> [За възпроизвеждане на музика]
>> ROB BOWDEN: Това съм аз, Роб.
Да се ​​разходим из как за изпълнение на Марио.
Така че първото нещо, което трябва да направите, е да пита потребителя за вход.
>> Ние трябва да ги попитам как точно висок пирамидата трябва да бъде.
Така че тук, ние виждаме, че правим височина = GetInt.
An И не забравяйте, че функцията GetInt се осъществява в CS50
библиотека, така че до върха, ние трябва да не забравяйте да включите # cs50.h.
>> Така че, защо имаме този увит в Do-линия, докато?
Е, ние също трябва да се помни, че въвеждане на потребителя трябва да бъде валиден.
Какво е невалиден вход?
Ами PSET спец. изрично казва, че на височина по-малко от 0 или по-голяма
от 23, е невалиден.
>> Така че тук, ние виждаме, че ние сме определянето константа, наречена MAX_HEIGHT с
стойност от 23.
Това не се прави, докато цикъл ще продължи, докато височина е по-малко от 0 или е MAX_HEIGHT
по-малко от височината, което означава, че 23 е по-малка от височината.
Така че, ако височината е 24 или повече, ние сме ще изпълнява командите.
Не забравяйте, че не се прави, докато цикли са доста полезно, когато искаме да получим
приноса на потребителите и след това да я валидира, тъй като ние неизбежно трябва да поиска от потребителя при
поне веднъж за стойността, която те искат.
>> Така че след като имаме своя принос, ние Сега може да се изгради пирамидата.
Един от триковете на този проблем постави, е че ние трябва да започне в началото на
пирамидата.
Вие не можете да ФОРМАТ дъното на пирамида, а след това изгради своя път нагоре.
Така че нека да погледнем примера от PSET спекулация.
>> Тук виждаме, че когато влезем височина от 8, на самото дъно на
пирамида отпечатва девет хешове.
Едно ниво по-нагоре от тази отпечатъци едно място и осем хешове.
Едно ниво по-нагоре от това е две пространства и седем хешове, чак докато не
стигне до върха на пирамидата, който е осем нива нагоре, което отпечатва седем
пространства и две хешове.
Така че не забравяйте, че ние трябва да направи първата това най-високо ниво.
>> Тук сме итерации от най-високо ниво, ред 8, продължавайки
докато ред достигне 0.
Е, как много места сме се нуждаят от да отпечатате в които най-горния ред?
Ние отпечатани седем пространства и две хешове.
Така че броят на местата за което искаме, е реда, че са били на минус 1.
>> Ако горният ред е 8, 8 минус 1 ни дава седем места.
Тогава ние имаме една линия, която ще отпечата от всяко разстояние един по един.
Така че, когато пространства е 7, този цикъл седем пъти, печат
седем отделни пространства.
>> Така че сега ние трябва да отпечатате тези хешове в края на пирамидата.
Така че тук, ние трябва да се изчисли броят на хешове.
Ние виждаме, че правим височина минус ред плюс 2.
Е, как стигнахме до това?
>> Не забравяйте, че на върха на пирамидата е ред 8, а височината е 8.
И ние все още отпечатани две хешове.
Така че най-малкото, 8 минус 8 плюс 2 ни дава правилния отговор.
И след това да разгледа дъното на пирамидата, ред 1.
Височина минус ред ще ни даде 7, и тогава плюс 2 ни дава девет хешове,
който е точно броят на хешове, че ние отпечатани.
Така че това е формулата, ние искаме да се използва за изчисляване на броя
хешове във всеки ред.
>> Използвайки този номер, ние тогава имаме друг за линия, много подобен на
за линия, която се използва за бутона, че повтаря няколко пъти хешове
отпечатване на единичен хашиш всеки път.
На най-горния ред, това ще отпечатате две хешове.
На най-долния ред, това ще отпечатате девет хешове.
И всеки друг ред ще отпечата всеки брой хешове между тях.
>> И след това в самия край, ние трябва да отпечатате нашата нова линия, за да преминете към следващата
ред в пирамидата.
И накрая, ние трябва да отпечатате на новата линия в края на реда, за да
продължи към следващата ред на пирамидата.
И в края на нашата програма, имаме връщане 0.
>> Според PSET спекулация, връщането 0 не е строго необходимо.
Но това не означава, че главната е направено.
Моето име е Роб, и това е Марио.
>> [За възпроизвеждане на музика]