>> [Musikgengivelse]
>> ROB BOWDEN: Det er mig, Rob.
Lad os gå igennem, hvordan at gennemføre Mario.
Så det første, vi skal gøre, er bede brugeren om input.
>> Vi er nødt til at spørge dem præcis, hvordan tall pyramiden skal være.
Så her ser vi vi laver højde = GetInt.
En Og husk, at det GetInt funktionen er implementeret i CS50
bibliotek, så op toppen, er vi nødt til husk at # include cs50.h.
>> Så hvorfor har vi denne indpakket i en gør-while-løkke?
Nå, skal vi også huske på, at brugerens input skal være gyldigt.
Hvad er et ugyldigt input?
Nå PSET spec specifikt siger at hvis højde er mindre end 0 eller større
end 23 er ugyldig.
>> Så her ser vi, at vi definerer en konstant kaldet MAX_HEIGHT med
værdi på 23.
Dette gør-while-løkke fortsætter, mens højde er mindre end 0 eller MAX_HEIGHT er
mindre end højde, hvilket betyder, at 23 er mindre end højden.
Så hvis højde er 24 eller højere, er vi vil fortsætte looping.
Husk, at gør-mens loops er temmelig nyttige, når vi ønsker at få
bruger input og derefter validere det, da vi uundgåeligt nødt til at spørge brugeren i
mindst én gang for den værdi, de ønsker.
>> Så når vi har deres input, vi kan nu bygge pyramiden.
Et af de tricks af dette problem, der er er at vi er nødt til at begynde i toppen af
pyramiden.
Man kan ikke printf bunden af pyramide og derefter bygge din vej op.
Så lad os se på eksemplet fra PSET spec.
>> Vi ser her, at når vi træder en højde 8, den meget bund
pyramide udskriver ni hashes.
Et niveau op fra at udskrifter ét rum og otte hashes.
Et niveau op fra der er to rum og syv hashes, hele vejen, indtil vi
komme til toppen af ​​pyramiden, som er otte niveauer op, som udskriver syv
rum og to hashes.
Så husk, at vi er nødt til at gøre det øverste niveau først.
>> Her vil vi iteration fra øverste niveau, række 8, fortsatte
indtil rækken når 0.
Så hvor mange pladser vi har brug for at udskrive i det øverste række?
Vi udskrevet syv pladser og to hashes.
Så antallet af pladser, vi ønsker, er den række, der var på minus 1.
>> Hvis den øverste række er 8, 8 minus 1 giver os syv pladser.
Så har vi en løkke, der udskrives ud hvert rum ad gangen.
Så når rum er 7, denne løkke syv gange, trykning
syv individuelle rum.
>> Så nu er vi nødt til at udskrive disse hashes ved udgangen af ​​pyramiden.
Så her er vi nødt til at beregne antallet af hashes.
Vi ser, at vi laver højde minus rækken plus 2.
Så hvordan får vi det?
>> Husk, at toppen af ​​pyramiden er række 8, og højden er 8.
Og vi har stadig udskrevet to hashes.
Så i det mindste, 8 minus 8 plus 2 giver os det rigtige svar.
Og derefter overveje bunden af pyramiden, række 1.
Højde minus rækken vil give os 7, og så plus 2 giver os ni hashes,
som er præcis det antal af hashes at vi udskrives.
Så dette er den formel, vi ønsker at bruge til at beregne antallet
hashes i hver række.
>> Ved hjælp af dette nummer, så har vi en anden for loop, meget lig den
for-løkke, som vi brugte til rum, at gentager antal hashes gange
udskrivning af en enkelt hash hver gang.
På den øverste række, der vil udskrive to hashes.
På den nederste række, der vil udskrive ni hashes.
Og hver anden række vil udskrive hver antal hashes i mellem.
>> Og så til allersidst, er vi nødt til at udskrive vores nye linje til at gå til den næste
ror i pyramiden.
Endelig er vi nødt til at udskrive den nye linje ved enden af ​​rækken for at
fortsætte til den næste række af pyramiden.
Og i slutningen af ​​vores program, vi har afkastet 0.
>> Som pr PSET spec, afkastet 0 er ikke strengt nødvendigt.
Men det betyder betyde, at main er gjort.
Mit navn er Rob, og det var Mario.
>> [Musikgengivelse]