>> [Muziek]
>> ROB BOWDEN: Ik ben het, Rob.
Laten we door hoe te implementeren Mario.
Dus het eerste wat we moeten doen is vraagt ​​de gebruiker om de input.
>> We moeten ze precies hoe vragen lang de piramide zou moeten zijn.
Dus hier zien we we doen height = getint.
Een En vergeet niet dat de getInt functie in CS50 geïmplementeerd
bibliotheek, dus tot boven, moeten we vergeet niet om # include cs50.h.
>> Dus waarom hebben we dit verpakt in een do-while-lus?
Nou, moeten we ook niet vergeten dat invoer van de gebruiker moet zijn geldig.
Wat is een ongeldige input?
Nou, de PSET spec zegt specifiek die een hoogte van minder dan 0 of groter
dan 23 is ongeldig.
>> Dus hier zien we dat we het definiëren een constante genaamd foto worden geplaatst met de
waarde van 23.
Deze do-while-lus zal blijven terwijl hoogte minder dan 0 of foto worden geplaatst is
minder dan de hoogte, waardoor 23 kleiner is dan de hoogte.
Dus als de hoogte is 24 of hoger, we zijn gaan blijven looping.
Vergeet niet dat do-while loops zijn vrij behulpzaam wanneer we willen krijgen
gebruikersinvoer en bevestig vervolgens, aangezien we onvermijdelijk nodig om de gebruiker te vragen op
minste eenmaal voor de waarde die ze willen.
>> We dus eens hebben hun inbreng, we kunnen nu bouwen aan de piramide.
Een van de trucs van dit probleem te stellen is dat we beginnen bovenaan
de piramide.
U kunt de onderkant van de niet printf piramide en dan bouw je weg omhoog.
Dus laten we eens kijken naar het voorbeeld van de PSET spec.
>> We zien hier dat wanneer we een hoogte van 8, de onderkant van de
piramide drukt negen hashes.
Een niveau hoger ligt dan dat prints een ruimte en acht hashes.
Een niveau hoger ligt dan die twee spaties en zeven hashes, de hele weg tot we
naar de top van de piramide, die acht niveaus up, die zeven drukt
ruimten en twee hashes.
Dus denk dat we moeten eerst doen dit topniveau.
>> Hier zijn we itereren van de topniveau, rij 8, voortgezet
totdat rij 0 bereikt.
Hoeveel ruimte hebben we nodig om af te drukken in die bovenste rij?
We gedrukt zeven ruimtes en twee hashes.
Dus het aantal spaties we willen is de rij die op min 1 waren.
>> Als de bovenste rij is 8, 8 min 1 geeft ons zeven ruimtes.
Dan hebben we een lus die wordt afgedrukt uit elke ruimte een voor een.
Dus wanneer ruimten is 7, deze lus zeven keer, afdrukken
zeven afzonderlijke ruimtes.
>> Dus nu moeten we deze hashes te printen aan het einde van de piramide.
Dus hier moeten we berekenen het aantal hashes.
We zien dat we hoogte doet minus rij plus 2.
Dus hoe hebben we dat krijgen?
>> Herinner dat de top van de piramide is rij 8, en de hoogte is 8.
En we nog steeds gedrukt twee hashes.
Dus op zijn minst 8 min 8 plus 2 geeft ons het juiste antwoord.
En overweeg dan de onderste van de piramide, rij 1.
Hoogte min rij zal ons 7 geven, en dan plus 2 geeft ons negen hashes,
die precies getal van hashes die we gedrukt.
Dus dit is de formule die we willen gebruiken om het aantal te berekenen
hashes in elke rij.
>> Met behulp van dat aantal, dan hebben we een andere lus, zeer vergelijkbaar met de
voor lus die we hebben gebruikt voor de ruimtes, dat herhaalt aantal hashes keren
printen van een enkele hash elke keer.
Op de bovenste rij, dat zal afdrukken op twee hashes.
Op de onderste rij, dat zal afdrukken negen hashes.
En elke andere rij elke prent aantal hashes in tussen.
>> En dan helemaal aan het eind, moeten we print onze nieuwe lijn te gaan naar de volgende
rij in de piramide.
Tot slot moeten we de nieuwe lijn af te drukken aan het eind van de rij om
verder naar de volgende rij van de piramide.
En aan het einde van ons programma, hebben we de return 0.
>> Zoals aangegeven in de PSET spec, de terugkeer 0 is niet strikt noodzakelijk.
Maar het hoeft te betekenen dat de belangrijkste is gedaan.
Mijn naam is Rob, en dit was Mario.
>> [Muziek]