1 00:00:00,000 --> 00:00:00,982 2 00:00:00,982 --> 00:00:11,293 >> [Speel van musiek] 3 00:00:11,293 --> 00:00:13,580 >> ROB BOWDEN: Dit is vir my, Rob. 4 00:00:13,580 --> 00:00:16,540 Kom ons loop deur hoe Mario te implementeer. 5 00:00:16,540 --> 00:00:21,040 Dus is die eerste ding wat ons moet doen, is om Vra die gebruiker vir die insette. 6 00:00:21,040 --> 00:00:24,440 >> Ons moet hulle presies hoe vra lank die piramide behoort te wees. 7 00:00:24,440 --> 00:00:27,110 So hier sien ons wat ons doen hoogte = getint. 8 00:00:27,110 --> 00:00:32,479 'N En onthou dat die getint funksie is in die CS50 geïmplementeer 9 00:00:32,479 --> 00:00:38,060 biblioteek, so tot bo, moet ons onthou om te # sluit cs50.h. 10 00:00:38,060 --> 00:00:41,360 >> So hoekom moet ons dit toegedraai in 'n do-while lus? 11 00:00:41,360 --> 00:00:45,080 Wel, ons het ook nodig het om te onthou die gebruiker se insette het om geldig te wees. 12 00:00:45,080 --> 00:00:46,910 Wat is 'n ongeldig insette? 13 00:00:46,910 --> 00:00:51,460 Wel, die pset spec sê spesifiek dat 'n hoogte minder as 0 of groter 14 00:00:51,460 --> 00:00:54,530 as 23 is ongeldig. 15 00:00:54,530 --> 00:00:59,030 >> So hier, sien ons dat ons die definisie 'n konstante genoem MAX_HEIGHT met die 16 00:00:59,030 --> 00:01:00,750 waarde van 23. 17 00:01:00,750 --> 00:01:06,380 Dit do-while lus sal voortgaan terwyl hoogte is minder as 0 of MAX_HEIGHT is 18 00:01:06,380 --> 00:01:11,870 minder as die hoogte, wat beteken dat 23 minder is as die hoogte. 19 00:01:11,870 --> 00:01:15,390 So as hoogte is 24 of meer is, ons is gaan voort herhaling. 20 00:01:15,390 --> 00:01:18,300 Onthou dat doen-terwyl loops is redelik nuttig wanneer ons wil te kry 21 00:01:18,300 --> 00:01:22,070 toevoer van die gebruiker en dan bekragtig nie, aangesien ons onvermydelik moet die gebruiker by te vra 22 00:01:22,070 --> 00:01:25,010 minste een keer vir die waarde wat hulle wil hê. 23 00:01:25,010 --> 00:01:28,500 >> So wanneer ons hul insette, ons kan nou die bou van die piramide. 24 00:01:28,500 --> 00:01:31,940 Een van die truuks van die probleem gestel is dat ons moet begin by die top van 25 00:01:31,940 --> 00:01:32,750 die piramide. 26 00:01:32,750 --> 00:01:36,800 Jy kan nie die bodem van die printf piramide en dan jou pad opbou. 27 00:01:36,800 --> 00:01:38,830 So laat ons kyk na die voorbeeld uit die pset spec. 28 00:01:38,830 --> 00:01:41,530 29 00:01:41,530 --> 00:01:45,430 >> Ons sien hier dat wanneer ons in 'n hoogte 8, die heel onderkant van die 30 00:01:45,430 --> 00:01:48,660 piramide druk nege twee velde. 31 00:01:48,660 --> 00:01:52,990 Een vlak op uit daardie druk een spasie en agt twee velde. 32 00:01:52,990 --> 00:01:58,250 Een vlak op van wat twee ruimtes en sewe twee velde, al die pad tot ons 33 00:01:58,250 --> 00:02:03,050 kry om die top van die piramide, wat agt vlakke up, wat druk sewe 34 00:02:03,050 --> 00:02:06,000 ruimtes en twee hashes. 35 00:02:06,000 --> 00:02:08,810 So onthou dat ons moet doen dit top vlak eerste. 36 00:02:08,810 --> 00:02:11,620 37 00:02:11,620 --> 00:02:18,500 >> Hier is ons iterating uit die boonste vlak, ry 8, voortgesette 38 00:02:18,500 --> 00:02:22,150 totdat ry bereik 0. 39 00:02:22,150 --> 00:02:25,820 So hoeveel ruimtes het ons nodig te druk in die boonste ry? 40 00:02:25,820 --> 00:02:29,310 Ons gedruk sewe ruimtes en twee hashes. 41 00:02:29,310 --> 00:02:34,450 So het die getal spasies wat ons wil hê, is die ry wat op minus 1. 42 00:02:34,450 --> 00:02:39,310 >> As die boonste ry is 8, 8 minus 1 gee ons sewe ruimtes. 43 00:02:39,310 --> 00:02:43,770 Dan het ons 'n lus wat druk uit elke ruimte een op 'n tyd. 44 00:02:43,770 --> 00:02:47,450 So wanneer ruimtes is 7, die lus sewe keer druk 45 00:02:47,450 --> 00:02:50,300 sewe individuele ruimtes. 46 00:02:50,300 --> 00:02:54,672 >> So nou het ons nodig het om hierdie twee velde te druk aan die einde van die piramide. 47 00:02:54,672 --> 00:02:57,930 So hier moet ons te bereken die aantal hashes. 48 00:02:57,930 --> 00:03:01,930 Ons sien dat ons doen hoogte minus ry plus 2. 49 00:03:01,930 --> 00:03:04,170 So hoe het ons dit? 50 00:03:04,170 --> 00:03:08,630 >> Onthou dat die top van die piramide is ry 8, en die hoogte is 8. 51 00:03:08,630 --> 00:03:10,890 En ons het nog gedruk twee hashes. 52 00:03:10,890 --> 00:03:15,420 So op die heel minste, 8 minus 8 plus 2 gee ons die regte antwoord. 53 00:03:15,420 --> 00:03:19,170 En dan kyk na die onderkant van die piramide, ry 1. 54 00:03:19,170 --> 00:03:24,020 Hoogte minus ry sal ons 7, en dan plus 2 gee ons nege twee velde, 55 00:03:24,020 --> 00:03:26,620 dit is presies die aantal van hashes dat ons gedruk. 56 00:03:26,620 --> 00:03:29,880 So dit is die formule wat ons wil gebruik om die getal te bereken 57 00:03:29,880 --> 00:03:32,220 hashes in elke ry. 58 00:03:32,220 --> 00:03:36,020 >> Met behulp van dat die getal, ons het dan 'n ander lus, baie soortgelyk aan die 59 00:03:36,020 --> 00:03:41,270 lus vir wat ons gebruik vir die huur, dat iterate aantal hashes keer 60 00:03:41,270 --> 00:03:43,720 druk van 'n enkele hash elke keer. 61 00:03:43,720 --> 00:03:46,010 Op die boonste ry, wat sal druk twee hashes. 62 00:03:46,010 --> 00:03:48,390 Op die onderste ry, wat sal druk nege twee velde. 63 00:03:48,390 --> 00:03:52,610 En mekaar ry elke druk aantal hashes in tussen. 64 00:03:52,610 --> 00:03:57,340 >> En dan aan die einde, moet ons druk ons ​​nuwe lyn te gaan na die volgende 65 00:03:57,340 --> 00:03:59,400 ry in die piramide. 66 00:03:59,400 --> 00:04:03,070 Ten slotte, moet ons die nuwe lyn te druk aan die einde van die ry om te 67 00:04:03,070 --> 00:04:06,260 voortgaan om die volgende ry van die piramide. 68 00:04:06,260 --> 00:04:08,980 En aan die einde van ons program, ons het die opbrengs 0. 69 00:04:08,980 --> 00:04:12,770 >> Soos per die pset spec, die terugkeer 0 is nie streng nodig. 70 00:04:12,770 --> 00:04:15,710 Maar dit beteken dui dat hoof gedoen word. 71 00:04:15,710 --> 00:04:17,610 My naam is Rob, en dit was Mario. 72 00:04:17,610 --> 00:04:22,470 >> [Speel van musiek] 73 00:04:22,470 --> 00:04:25,558