>> [Музички]
>> Роб BOWDEN: Тоа е мене, Роб.
Ајде да одиме преку тоа како за спроведување на Марио.
Така првото нешто што треба да направите е да го извести корисникот за влез.
>> Ние треба да ги прашате како точно висок пирамидата треба да биде.
Па еве гледаме што го правиме height = GetInt.
На и се сеќавам дека GetInt функција се спроведува во CS50
библиотека, па до врвот, ние треба да се не заборавајте да го вклучите # cs50.h.
>> Па зошто ние ја имаат оваа завиткан во не-додека јамка?
Па, ние исто така треба да се запамети дека влез на корисникот мора да биде валидна.
Што е валиден влез?
Па pset спецификации конкретно се вели дека висина помала од 0 или поголема
од 23 не е валиден.
>> Значи тука, можеме да видиме дека ние сме дефинирање постојана наречен MAX_HEIGHT со
вредноста на 23.
Ова не-додека јамка ќе продолжи додека висина е помала од 0 или MAX_HEIGHT е
помалку од висината, што значи дека 23 е помала од висината.
Значи, ако висината е 24 или повеќе, ние сме ќе продолжи looping.
Се сеќавам дека не се прави додека петелки се прилично корисни кога сакаме да се добие
корисникот влез, а потоа го провери, бидејќи ние неизбежно треба да побара од корисникот на
најмалку еднаш за вредноста што тие сакаат.
>> Значи еднаш сме се нивниот придонес, ние сега може да се изгради пирамида.
Еден од трикови на овој проблем во собата е дека ние треба да почнеме на врвот на
пирамидата.
Не може да printf на дното на пирамида и потоа се изгради на вашиот пат до.
Па ајде да погледнеме на пример од pset спецификации.
>> Гледаме тука дека кога влегуваме во висина од 8, на самото дно на
пирамида отпечатоци девет хашови.
Едно ниво нагоре од тоа отпечатоци еден простор и осум хашови.
Едно ниво нагоре од што е два простори и седум хашови, сè додека не се
стигнете до врвот на пирамидата, која е осум нивоа нагоре, кој отпечатоци седум
простори и две хашови.
Па се сеќавам дека ние треба да направите ова највисоко ниво во прв план.
>> Тука сме процесирањето од највисоко ниво, ред 8, продолжувајќи
до ред достигнува 0.
Значи колку простори не ни треба да се печати во кои горниот ред?
Ние печатени седум простори и две хашови.
Па бројот на празни места што сакаме е ред кои беа на минус 1.
>> Ако горниот ред е 8, 8 минус 1 ни дава седум места.
Тогаш имаме јамка дека ќе печати од секој простор едно по едно време.
Па кога простори е 7, овој циклус седум пати, печатење
седум индивидуални простори.
>> Па сега ние треба да се печати овие хашови на крајот на пирамида.
Па еве, ние треба да се пресмета број на хаш.
Можеме да видиме дека ние сме прави висина минус ред плус 2.
Па како сме стигнале тоа?
>> Се сеќавам дека на врвот на пирамидата е ред 8, и висината е 8.
И ние се уште печатени две хашови.
Па во најмала рака, 8 минус 8 плус 2 ни дава за право одговор.
А потоа се разгледа дното на пирамидата, ред 1.
Висина минус ред ќе ни даде 7, и тогаш плус 2 ни дава девет хашови,
што е точно бројот на хашови дека ние печатени.
Значи ова е формулата што сакаме да го користат да се пресмета бројот
хашови во секој ред.
>> Користење на тој број, тогаш ние имаме уште за телефонска линија, многу слична на
за телефонска линија дека ние се користи за простори, дека iterates број на хашови пати
печатење на една хаш секој пат.
На горниот ред, тоа ќе печати две хашови.
На долниот ред, тоа ќе печати девет хашови.
И секоја друга ред ќе се печати на секои број на хашови помеѓу.
>> А потоа на самиот крај, треба да се печати нашиот нов ред за да оди на следното
ред во пирамидата.
Конечно, ние треба да се печати на нова линија на крајот на ред со цел да се
продолжи до друга ред на пирамида.
И на крајот на нашата програма, имаме враќање 0.
>> Како за на pset спецификации, враќањето 0 не е стриктно потребно.
Но, тоа не значи дека главната е завршена.
Моето име е Роб, и тоа беше Марио.
>> [Музички]