1 00:00:00,000 --> 00:00:00,982 2 00:00:00,982 --> 00:00:11,293 >> [Muzikavimo] 3 00:00:11,293 --> 00:00:13,580 >> ROB BOWDEN: Tai man Robas. 4 00:00:13,580 --> 00:00:16,540 Leiskite eiti per patirtį įgyvendinti Mario. 5 00:00:16,540 --> 00:00:21,040 Taigi pirmas dalykas, kurį reikia padaryti, tai paskatinti už indėlį vartotoją. 6 00:00:21,040 --> 00:00:24,440 >> Mes turime juos prašyti, kaip tiksliai aukščio piramidės turėtų būti. 7 00:00:24,440 --> 00:00:27,110 Taigi čia mes matome, ką mes darome, aukštis = GetInt. 8 00:00:27,110 --> 00:00:32,479 Ir atminkite, kad GetInt funkcija yra įgyvendinamas CS50 9 00:00:32,479 --> 00:00:38,060 biblioteka, taip iki viršaus, turime nepamirškite # Include cs50.h. 10 00:00:38,060 --> 00:00:41,360 >> Tad kodėl mes turime tai suvynioti į do-while cikle? 11 00:00:41,360 --> 00:00:45,080 Na, mums taip pat reikia prisiminti, kad vartotojo įvestis turi galioti. 12 00:00:45,080 --> 00:00:46,910 Kas yra neteisingas įėjimas? 13 00:00:46,910 --> 00:00:51,460 Na pset spec specialiai sako kad aukštis mažesnis kaip 0 arba didesnis 14 00:00:51,460 --> 00:00:54,530 nei 23 negalioja. 15 00:00:54,530 --> 00:00:59,030 >> Taigi čia matome, kad mes apibrėžti konstanta vadinama MAX_HEIGHT su 16 00:00:59,030 --> 00:01:00,750 vertė 23 p. 17 00:01:00,750 --> 00:01:06,380 Tai do-while cikle ir toliau kol aukštis yra mažesnis už 0 arba MAX_HEIGHT yra 18 00:01:06,380 --> 00:01:11,870 mažiau nei aukščio, o tai reiškia, kad 23 yra mažiau už aukštį. 19 00:01:11,870 --> 00:01:15,390 Taigi, jei aukštis yra 24 ar didesnis, mes ketina toliau apsisukimo. 20 00:01:15,390 --> 00:01:18,300 Atminkite, kad do-o kilpos yra gana naudinga, kai mes norime gauti 21 00:01:18,300 --> 00:01:22,070 naudotojo įvesties ir tada ją patvirtinti, kadangi mes neišvengiamai reikia paprašyti, kad naudotojas ne 22 00:01:22,070 --> 00:01:25,010 bent vieną kartą vertės jie nori. 23 00:01:25,010 --> 00:01:28,500 >> Taigi, kai mes turime savo indėlį, mes dabar gali statyti piramidę. 24 00:01:28,500 --> 00:01:31,940 Vienas iš šios problemos gudrybės keliamų kad mes turime pradėti viršuje 25 00:01:31,940 --> 00:01:32,750 piramidės. 26 00:01:32,750 --> 00:01:36,800 Jūs negalite printf į dugną piramidės ir tada kurti savo kelią. 27 00:01:36,800 --> 00:01:38,830 Taigi pažvelkime pavyzdyje iš pset spec. 28 00:01:38,830 --> 00:01:41,530 29 00:01:41,530 --> 00:01:45,430 >> Čia mes matome, kad kai mes įvesti ūgis 8, labai apačioje 30 00:01:45,430 --> 00:01:48,660 piramidės spausdina devynis maišas. 31 00:01:48,660 --> 00:01:52,990 Vienas lygiu aukštyn nuo atspaudai viena erdvė ir aštuonių maišos. 32 00:01:52,990 --> 00:01:58,250 Vienas lygis iki to yra du skyriai ir septynios maišos, visą kelią, kol mes 33 00:01:58,250 --> 00:02:03,050 patekti į piramidės, kuri yra viršuje Aštuoni lygmenys up, kuris spausdina septynių 34 00:02:03,050 --> 00:02:06,000 skyriai ir dvi maišos. 35 00:02:06,000 --> 00:02:08,810 Taigi nepamirškite, kad mes turime padaryti šį aukščiausio lygio pirmas. 36 00:02:08,810 --> 00:02:11,620 37 00:02:11,620 --> 00:02:18,500 >> Čia mes Iteracja nuo aukščiausio lygio, 8 eilutės, toliau 38 00:02:18,500 --> 00:02:22,150 kol eilė pasiekia 0. 39 00:02:22,150 --> 00:02:25,820 Taigi, kaip daug erdvės dar turime spausdinti toje viršutinėje eilutėje? 40 00:02:25,820 --> 00:02:29,310 Mes atspausdintas septynias erdves ir dvi maišos. 41 00:02:29,310 --> 00:02:34,450 Taigi vietų skaičių mes norime eilutė, kuri buvo ant minus 1. 42 00:02:34,450 --> 00:02:39,310 >> Jei viršutinė eilutė yra 8, 8 minuso 1 duoda mums septynis erdvėse. 43 00:02:39,310 --> 00:02:43,770 Tada mes turime kilpą, kad bus spausdinti iš kiekvienos kosmoso vienu metu. 44 00:02:43,770 --> 00:02:47,450 Taigi, kai tarpai yra 7, tai kilpa septynis kartus, spauda 45 00:02:47,450 --> 00:02:50,300 septynios atskiros erdvės. 46 00:02:50,300 --> 00:02:54,672 >> Taigi dabar mes turime atspausdinti ðiuos maišas ne piramidės pabaigoje. 47 00:02:54,672 --> 00:02:57,930 Taigi čia mes turime apskaičiuoti hash skaičius. 48 00:02:57,930 --> 00:03:01,930 Mes matome, kad mes darome ūgis atėmus eilutė plius 2. 49 00:03:01,930 --> 00:03:04,170 Taigi, kaip mes jį gauti? 50 00:03:04,170 --> 00:03:08,630 >> Atminkite, kad piramidės viršų yra 8 eilutė, o aukštis yra 8. 51 00:03:08,630 --> 00:03:10,890 Ir mes vis dar atspausdinti du maišas. 52 00:03:10,890 --> 00:03:15,420 Taigi, bent jau, 8 minus 8 plius 2 suteikia mums teisingą atsakymą. 53 00:03:15,420 --> 00:03:19,170 Ir tada apsvarstyti dugną piramidės eilutė 1. 54 00:03:19,170 --> 00:03:24,020 Ūgis minus eilutė duos mums 7 ir tada plius 2 suteikia mums devynis maišas, 55 00:03:24,020 --> 00:03:26,620 kuris yra tiksliai skaičius iš maišų, kad mes spausdinti. 56 00:03:26,620 --> 00:03:29,880 Taigi tai yra formulė norime siekiant apskaičiuoti numerį 57 00:03:29,880 --> 00:03:32,220 maišos kiekvienoje eilutėje. 58 00:03:32,220 --> 00:03:36,020 >> Naudojant šį skaičių, tada mes turime kitą už linijos, yra labai panaši į 59 00:03:36,020 --> 00:03:41,270 už linijos, kad mes, naudojamo erdves, kad kartojasi numeris maišos kartų 60 00:03:41,270 --> 00:03:43,720 spausdinti vieną maišos kiekvieną kartą. 61 00:03:43,720 --> 00:03:46,010 Ant viršutinėje eilutėje, kad bus spausdinti du maišas. 62 00:03:46,010 --> 00:03:48,390 Dėl apatinėje eilutėje, kad bus spausdinti devynis maišas. 63 00:03:48,390 --> 00:03:52,610 Ir kiekviena kita eilutė bus atspausdinti kiekvieną skaičius masyvus tarp. 64 00:03:52,610 --> 00:03:57,340 >> Ir tada pačiame gale, mes turime spausdinti mūsų naują eilutę eiti į kitą 65 00:03:57,340 --> 00:03:59,400 eilės piramidės. 66 00:03:59,400 --> 00:04:03,070 Galiausiai, mes turime atsispausdinti naują eilutę prie eilutės pabaigoje, siekiant 67 00:04:03,070 --> 00:04:06,260 toliau kitą eilutė piramidės. 68 00:04:06,260 --> 00:04:08,980 Ir mūsų programos pabaigoje mes turime grįžti 0. 69 00:04:08,980 --> 00:04:12,770 >> Kaip per pset spec Grąžinimo 0 nėra būtinos. 70 00:04:12,770 --> 00:04:15,710 Bet tai reiškia, kad pagrindinis daroma. 71 00:04:15,710 --> 00:04:17,610 Mano vardas yra Rob, ir tai buvo Mario. 72 00:04:17,610 --> 00:04:22,470 >> [Muzikavimo] 73 00:04:22,470 --> 00:04:25,558