[Muzikavimo] ROB BOWDEN: Tai man Robas. Leiskite eiti per patirtį įgyvendinti Mario. Taigi pirmas dalykas, kurį reikia padaryti, tai paskatinti už indėlį vartotoją. Mes turime juos prašyti, kaip tiksliai aukščio piramidės turėtų būti. Taigi čia mes matome, ką mes darome, aukštis = GetInt. Ir atminkite, kad GetInt funkcija yra įgyvendinamas CS50 biblioteka, taip iki viršaus, turime nepamirškite # Include cs50.h. Tad kodėl mes turime tai suvynioti į do-while cikle? Na, mums taip pat reikia prisiminti, kad vartotojo įvestis turi galioti. Kas yra neteisingas įėjimas? Na pset spec specialiai sako kad aukštis mažesnis kaip 0 arba didesnis nei 23 negalioja. Taigi čia matome, kad mes apibrėžti konstanta vadinama MAX_HEIGHT su vertė 23 p. Tai do-while cikle ir toliau kol aukštis yra mažesnis už 0 arba MAX_HEIGHT yra mažiau nei aukščio, o tai reiškia, kad 23 yra mažiau už aukštį. Taigi, jei aukštis yra 24 ar didesnis, mes ketina toliau apsisukimo. Atminkite, kad do-o kilpos yra gana naudinga, kai mes norime gauti naudotojo įvesties ir tada ją patvirtinti, kadangi mes neišvengiamai reikia paprašyti, kad naudotojas ne bent vieną kartą vertės jie nori. Taigi, kai mes turime savo indėlį, mes dabar gali statyti piramidę. Vienas iš šios problemos gudrybės keliamų kad mes turime pradėti viršuje piramidės. Jūs negalite printf į dugną piramidės ir tada kurti savo kelią. Taigi pažvelkime pavyzdyje iš pset spec. Čia mes matome, kad kai mes įvesti ūgis 8, labai apačioje piramidės spausdina devynis maišas. Vienas lygiu aukštyn nuo atspaudai viena erdvė ir aštuonių maišos. Vienas lygis iki to yra du skyriai ir septynios maišos, visą kelią, kol mes patekti į piramidės, kuri yra viršuje Aštuoni lygmenys up, kuris spausdina septynių skyriai ir dvi maišos. Taigi nepamirškite, kad mes turime padaryti šį aukščiausio lygio pirmas. Čia mes Iteracja nuo aukščiausio lygio, 8 eilutės, toliau kol eilė pasiekia 0. Taigi, kaip daug erdvės dar turime spausdinti toje viršutinėje eilutėje? Mes atspausdintas septynias erdves ir dvi maišos. Taigi vietų skaičių mes norime eilutė, kuri buvo ant minus 1. Jei viršutinė eilutė yra 8, 8 minuso 1 duoda mums septynis erdvėse. Tada mes turime kilpą, kad bus spausdinti iš kiekvienos kosmoso vienu metu. Taigi, kai tarpai yra 7, tai kilpa septynis kartus, spauda septynios atskiros erdvės. Taigi dabar mes turime atspausdinti ðiuos maišas ne piramidės pabaigoje. Taigi čia mes turime apskaičiuoti hash skaičius. Mes matome, kad mes darome ūgis atėmus eilutė plius 2. Taigi, kaip mes jį gauti? Atminkite, kad piramidės viršų yra 8 eilutė, o aukštis yra 8. Ir mes vis dar atspausdinti du maišas. Taigi, bent jau, 8 minus 8 plius 2 suteikia mums teisingą atsakymą. Ir tada apsvarstyti dugną piramidės eilutė 1. Ūgis minus eilutė duos mums 7 ir tada plius 2 suteikia mums devynis maišas, kuris yra tiksliai skaičius iš maišų, kad mes spausdinti. Taigi tai yra formulė norime siekiant apskaičiuoti numerį maišos kiekvienoje eilutėje. Naudojant šį skaičių, tada mes turime kitą už linijos, yra labai panaši į už linijos, kad mes, naudojamo erdves, kad kartojasi numeris maišos kartų spausdinti vieną maišos kiekvieną kartą. Ant viršutinėje eilutėje, kad bus spausdinti du maišas. Dėl apatinėje eilutėje, kad bus spausdinti devynis maišas. Ir kiekviena kita eilutė bus atspausdinti kiekvieną skaičius masyvus tarp. Ir tada pačiame gale, mes turime spausdinti mūsų naują eilutę eiti į kitą eilės piramidės. Galiausiai, mes turime atsispausdinti naują eilutę prie eilutės pabaigoje, siekiant toliau kitą eilutė piramidės. Ir mūsų programos pabaigoje mes turime grįžti 0. Kaip per pset spec Grąžinimo 0 nėra būtinos. Bet tai reiškia, kad pagrindinis daroma. Mano vardas yra Rob, ir tai buvo Mario. [Muzikavimo]