>> [Speel van musiek]
>> ROB BOWDEN: Dit is vir my, Rob.
Kom ons loop deur hoe Mario te implementeer.
Dus is die eerste ding wat ons moet doen, is om Vra die gebruiker vir die insette.
>> Ons moet hulle presies hoe vra lank die piramide behoort te wees.
So hier sien ons wat ons doen hoogte = getint.
'N En onthou dat die getint funksie is in die CS50 geïmplementeer
biblioteek, so tot bo, moet ons onthou om te # sluit cs50.h.
>> So hoekom moet ons dit toegedraai in 'n do-while lus?
Wel, ons het ook nodig het om te onthou die gebruiker se insette het om geldig te wees.
Wat is 'n ongeldig insette?
Wel, die pset spec sê spesifiek dat 'n hoogte minder as 0 of groter
as 23 is ongeldig.
>> So hier, sien ons dat ons die definisie 'n konstante genoem MAX_HEIGHT met die
waarde van 23.
Dit do-while lus sal voortgaan terwyl hoogte is minder as 0 of MAX_HEIGHT is
minder as die hoogte, wat beteken dat 23 minder is as die hoogte.
So as hoogte is 24 of meer is, ons is gaan voort herhaling.
Onthou dat doen-terwyl loops is redelik nuttig wanneer ons wil te kry
toevoer van die gebruiker en dan bekragtig nie, aangesien ons onvermydelik moet die gebruiker by te vra
minste een keer vir die waarde wat hulle wil hê.
>> So wanneer ons hul insette, ons kan nou die bou van die piramide.
Een van die truuks van die probleem gestel is dat ons moet begin by die top van
die piramide.
Jy kan nie die bodem van die printf piramide en dan jou pad opbou.
So laat ons kyk na die voorbeeld uit die pset spec.
>> Ons sien hier dat wanneer ons in 'n hoogte 8, die heel onderkant van die
piramide druk nege twee velde.
Een vlak op uit daardie druk een spasie en agt twee velde.
Een vlak op van wat twee ruimtes en sewe twee velde, al die pad tot ons
kry om die top van die piramide, wat agt vlakke up, wat druk sewe
ruimtes en twee hashes.
So onthou dat ons moet doen dit top vlak eerste.
>> Hier is ons iterating uit die boonste vlak, ry 8, voortgesette
totdat ry bereik 0.
So hoeveel ruimtes het ons nodig te druk in die boonste ry?
Ons gedruk sewe ruimtes en twee hashes.
So het die getal spasies wat ons wil hê, is die ry wat op minus 1.
>> As die boonste ry is 8, 8 minus 1 gee ons sewe ruimtes.
Dan het ons 'n lus wat druk uit elke ruimte een op 'n tyd.
So wanneer ruimtes is 7, die lus sewe keer druk
sewe individuele ruimtes.
>> So nou het ons nodig het om hierdie twee velde te druk aan die einde van die piramide.
So hier moet ons te bereken die aantal hashes.
Ons sien dat ons doen hoogte minus ry plus 2.
So hoe het ons dit?
>> Onthou dat die top van die piramide is ry 8, en die hoogte is 8.
En ons het nog gedruk twee hashes.
So op die heel minste, 8 minus 8 plus 2 gee ons die regte antwoord.
En dan kyk na die onderkant van die piramide, ry 1.
Hoogte minus ry sal ons 7, en dan plus 2 gee ons nege twee velde,
dit is presies die aantal van hashes dat ons gedruk.
So dit is die formule wat ons wil gebruik om die getal te bereken
hashes in elke ry.
>> Met behulp van dat die getal, ons het dan 'n ander lus, baie soortgelyk aan die
lus vir wat ons gebruik vir die huur, dat iterate aantal hashes keer
druk van 'n enkele hash elke keer.
Op die boonste ry, wat sal druk twee hashes.
Op die onderste ry, wat sal druk nege twee velde.
En mekaar ry elke druk aantal hashes in tussen.
>> En dan aan die einde, moet ons druk ons ​​nuwe lyn te gaan na die volgende
ry in die piramide.
Ten slotte, moet ons die nuwe lyn te druk aan die einde van die ry om te
voortgaan om die volgende ry van die piramide.
En aan die einde van ons program, ons het die opbrengs 0.
>> Soos per die pset spec, die terugkeer 0 is nie streng nodig.
Maar dit beteken dui dat hoof gedoen word.
My naam is Rob, en dit was Mario.
>> [Speel van musiek]