>> [MUSIK SPELA]
>> ROB BOWDEN: Det är jag, Rob.
Låt oss gå igenom hur att genomföra Mario.
Så det första vi behöver göra är uppmana användaren för inmatning.
>> Vi måste fråga dem exakt hur tall pyramiden ska vara.
Så här ser vi att vi gör height = getInt.
Ett Och kom ihåg att getInt funktionen implementeras i CS50
bibliotek, så där uppe måste vi kom ihåg att # include cs50.h.
>> Så varför har vi denna inslagna i en gör-while-slinga?
Tja, vi måste också komma ihåg att användarens input måste vara giltigt.
Vad är en ogiltig inmatning?
Tja pset spec uttryckligen säger att en höjd som är mindre än 0 eller större
än 23 är ogiltig.
>> Så här uppe, ser vi att vi definierar en konstant kallas MAX_HEIGHT med
värde av 23.
Detta gör-while-slinga fortsätter samtidigt höjd är mindre än 0 eller MAX_HEIGHT är
mindre än höjd, vilket innebär att 23 är mindre än höjden.
Så om höjden är 24 eller högre, är vi kommer att fortsätta looping.
Kom ihåg att göra-while-slingor är ganska hjälp när vi vill få
användarens input och sedan bekräfta det, eftersom Vi måste oundvikligen att fråga användaren vid
minst en gång för det värde de vill.
>> Så när vi har deras insatser, vi kan nu bygga pyramiden.
Ett av knepen av detta problem som är att vi måste börja på toppen av
pyramiden.
Man kan inte printf botten av pyramid och sedan bygga dig uppåt.
Så låt oss titta på exemplet från pset spec.
>> Vi ser här att när vi går in i en höjd av 8, i botten av den
pyramid skriver nio hashar.
En nivå upp från att utskrifter en plats och åtta hashar.
En nivå upp från det är två platser och sju hashar, ända tills vi
komma till toppen av pyramiden, som är åtta nivåer upp, som trycker sju
platser och två hashar.
Så kom ihåg att vi måste gör detta toppnivå först.
>> Här vi iteration av toppnivå, rad 8, fortsätter
tills raden når 0.
Så hur många platser vi behöver att skriva ut i den översta raden?
Vi ut sju utrymmen och två hashar.
Så hur många platser vi vill ha är den rad som var på minus 1.
>> Om den översta raden är 8, 8 minus 1 ger oss sju platser.
Sedan har vi en loop som skriver ut ut varje utrymme en i taget.
Så när utrymmen är 7, denna slinga sju gånger, tryckning
sju enskilda utrymmen.
>> Så nu måste vi skriva ut dessa hashar vid slutet av pyramiden.
Så här måste vi räkna antalet hashar.
Vi ser att vi gör höjd minus rad plus 2.
Så hur har vi det?
>> Kom ihåg att pyramidens topp är rad 8, och höjden är 8.
Och vi fortfarande tryckt två hashar.
Så åtminstone 8 minus 8 plus 2 ger oss rätt svar.
Och sedan överväga botten av pyramiden, rad 1.
Höjd minus rad ger oss 7, och då plus 2 ger oss nio hashar,
vilket är exakt det antal av hashar som vi tryckt.
Så detta är den formel som vi vill använda för att beräkna antalet
hashar i varje rad.
>> Med hjälp av den siffran, vi sedan har en annan för slinga, mycket lik den
för slinga som vi använde för utrymmena, som itererar flera hashar gånger
skriva ut en enda hash varje gång.
På den översta raden, kommer att skriva ut två hashar.
På den nedersta raden, kommer att ut nio hashar.
Och varje annan rad kommer ut varje Antalet hashar i mellan.
>> Och sedan i slutet, måste vi skriva ut våra nya linjen för att gå till nästa
ro i pyramiden.
Slutligen måste vi skriva ut den nya linjen vid slutet av raden i syfte att
fortsätta till nästa raden av pyramiden.
Och i slutet av vårt program, vi har retur 0.
>> Per pset spec, avkastningen 0 är inte absolut nödvändigt.
Men det betyder att huvud görs.
Mitt namn är Rob, och detta var Mario.
>> [MUSIK SPELA]