>> [Redare a muzicii]
>> ROB BOWDEN: Sunt eu, Rob.
Să plimbare prin modul în care să pună în aplicare Mario.
Deci, primul lucru pe care trebuie să faceți este să solicita utilizatorului pentru intrare.
>> Avem nevoie de a le cere exact cum înalt piramida ar trebui să fie.
Deci, aici, vedem ce facem înălțime = getint.
Un Și amintiți-vă că funcția getint este implementat în CS50
bibliotecă, astfel încât până sus, trebuie să amintiți-vă pentru a # include cs50.h.
>> Deci, de ce avem această înfășurat într-o buclă do-timp?
Ei bine, avem nevoie, de asemenea, să ne amintim că de intrare a utilizatorului trebuie să fie valid.
Ce este o intrare invalid?
Ei bine, spec. PSET spune în mod specific că o înălțime mai mică de 0 sau mai mare
mult de 23 este invalid.
>> Deci, aici, vedem că suntem definirea o constantă numită MAX_HEIGHT cu
valoare de 23.
Această buclă do-in timp ce va continua în timp ce înălțime este mai mică decât 0 sau MAX_HEIGHT este
mai mic de înălțime, ceea ce înseamnă că 23 este mai mică decât înălțimea.
Deci, dacă înălțimea este de 24 sau mai mare, suntem va continua looping.
Amintiți-vă că face-în timp ce buclele sunt destul de ajutor ori de câte ori ne-o dorim pentru a obține
introduse de utilizator și apoi valida, deoarece avem în mod inevitabil trebuie să solicite utilizatorului la
puțin o dată pentru valoarea pe care o doresc.
>> Deci, odată ce avem de intrare a acestora, ne-am pot construi acum piramida.
Unul dintre trucuri de această problemă stabilite este care trebuie să înceapă de la partea de sus a
piramida.
Nu puteți printf partea de jos a piramidă și apoi construi-ți de drum în sus.
Așa că haideți să ne uităm la exemplul de la spec. PSET.
>> Vedem aici că, atunci când intrăm într-o înălțime de 8, chiar în partea de jos a
piramidă imprimă nouă hash-uri.
Un nivel de la care imprimă un spațiu și opt hash-uri.
Un nivel de la care este de două spații și șapte hash, tot drumul până la noi
ajunge la partea de sus a piramidei, care este opt niveluri de sus, care publică șapte
spații și două hashes.
Deci, amintiți-vă că trebuie să face acest nivel de top în primul rând.
>> Aici suntem iterarea From la nivel de top, rândul 8, continuând
până rând ajunge la 0.
Deci, cum de multe spatii am nevoie pentru a imprima în rândul de sus?
Noi imprimate șapte spații și două hashes.
Deci, numărul de spații ce vrem este rândul care au fost pe minus 1.
>> Dacă rândul de sus este de 8, 8 minus 1 ne dă șapte spații.
Atunci avem o buclă care va imprima în fiecare spațiu la un moment dat.
Deci, atunci când spații este de 7, această buclă de șapte ori, de imprimare
șapte spații individuale.
>> Deci, acum, avem nevoie pentru a imprima aceste hashes la sfârșitul piramidei.
Deci, aici, avem nevoie pentru a calcula numărul de hash-uri.
Vedem că facem înălțime rând minus plus 2.
Deci, cum am ajuns asta?
>> Amintiți-vă că vârful piramidei este rândul 8, iar înălțimea este de 8.
Și noi încă tipărite două hash-uri.
Deci, cel puțin, 8 minus 8 plus 2 ne dă răspunsul corect.
Și apoi ia în considerare în partea de jos piramidei, rândul 1.
Înălțime minus rând ne va da 7, și apoi plus 2 ne dă nouă hash-uri,
care este exact numărul de de hash pe care ne-am imprimat.
Deci, aceasta este formula dorim să utilizați pentru a calcula numărul
hash în fiecare rând.
>> Folosind acest număr, atunci avem o altă pentru bucla, foarte similar cu
pentru bucla pe care am folosit pentru spațiile, reiterează că numărul de hash-uri ori
imprimarea unui singur hash de fiecare dată.
Pe rândul de sus, care va imprima două hashes.
Pe rândul de jos, ca voi imprima nouă hash.
Și reciproc rând se va imprima fiecare numărul de hash-uri în între.
>> Și apoi de la capăt, trebuie să imprima noua noastră linie pentru a merge la alta
rând în piramida.
În cele din urmă, avem nevoie pentru a imprima noua linie la sfârșitul rândului pentru a
continua la altul rând a piramidei.
Și la sfârșitul programului nostru, avem revenirea 0.
>> Ca pe spec. PSET, revenirea 0 nu este strict necesar.
Dar aceasta nu înseamnă că se face principal.
Numele meu este Rob, iar acest lucru a fost Mario.
>> [Redare a muzicii]