1 00:00:00,000 --> 00:00:00,982 2 00:00:00,982 --> 00:00:11,293 >> [Muziek] 3 00:00:11,293 --> 00:00:13,580 >> ROB BOWDEN: Ik ben het, Rob. 4 00:00:13,580 --> 00:00:16,540 Laten we door hoe te implementeren Mario. 5 00:00:16,540 --> 00:00:21,040 Dus het eerste wat we moeten doen is vraagt ​​de gebruiker om de input. 6 00:00:21,040 --> 00:00:24,440 >> We moeten ze precies hoe vragen lang de piramide zou moeten zijn. 7 00:00:24,440 --> 00:00:27,110 Dus hier zien we we doen height = getint. 8 00:00:27,110 --> 00:00:32,479 Een En vergeet niet dat de getInt functie in CS50 geïmplementeerd 9 00:00:32,479 --> 00:00:38,060 bibliotheek, dus tot boven, moeten we vergeet niet om # include cs50.h. 10 00:00:38,060 --> 00:00:41,360 >> Dus waarom hebben we dit verpakt in een do-while-lus? 11 00:00:41,360 --> 00:00:45,080 Nou, moeten we ook niet vergeten dat invoer van de gebruiker moet zijn geldig. 12 00:00:45,080 --> 00:00:46,910 Wat is een ongeldige input? 13 00:00:46,910 --> 00:00:51,460 Nou, de PSET spec zegt specifiek die een hoogte van minder dan 0 of groter 14 00:00:51,460 --> 00:00:54,530 dan 23 is ongeldig. 15 00:00:54,530 --> 00:00:59,030 >> Dus hier zien we dat we het definiëren een constante genaamd foto worden geplaatst met de 16 00:00:59,030 --> 00:01:00,750 waarde van 23. 17 00:01:00,750 --> 00:01:06,380 Deze do-while-lus zal blijven terwijl hoogte minder dan 0 of foto worden geplaatst is 18 00:01:06,380 --> 00:01:11,870 minder dan de hoogte, waardoor 23 kleiner is dan de hoogte. 19 00:01:11,870 --> 00:01:15,390 Dus als de hoogte is 24 of hoger, we zijn gaan blijven looping. 20 00:01:15,390 --> 00:01:18,300 Vergeet niet dat do-while loops zijn vrij behulpzaam wanneer we willen krijgen 21 00:01:18,300 --> 00:01:22,070 gebruikersinvoer en bevestig vervolgens, aangezien we onvermijdelijk nodig om de gebruiker te vragen op 22 00:01:22,070 --> 00:01:25,010 minste eenmaal voor de waarde die ze willen. 23 00:01:25,010 --> 00:01:28,500 >> We dus eens hebben hun inbreng, we kunnen nu bouwen aan de piramide. 24 00:01:28,500 --> 00:01:31,940 Een van de trucs van dit probleem te stellen is dat we beginnen bovenaan 25 00:01:31,940 --> 00:01:32,750 de piramide. 26 00:01:32,750 --> 00:01:36,800 U kunt de onderkant van de niet printf piramide en dan bouw je weg omhoog. 27 00:01:36,800 --> 00:01:38,830 Dus laten we eens kijken naar het voorbeeld van de PSET spec. 28 00:01:38,830 --> 00:01:41,530 29 00:01:41,530 --> 00:01:45,430 >> We zien hier dat wanneer we een hoogte van 8, de onderkant van de 30 00:01:45,430 --> 00:01:48,660 piramide drukt negen hashes. 31 00:01:48,660 --> 00:01:52,990 Een niveau hoger ligt dan dat prints een ruimte en acht hashes. 32 00:01:52,990 --> 00:01:58,250 Een niveau hoger ligt dan die twee spaties en zeven hashes, de hele weg tot we 33 00:01:58,250 --> 00:02:03,050 naar de top van de piramide, die acht niveaus up, die zeven drukt 34 00:02:03,050 --> 00:02:06,000 ruimten en twee hashes. 35 00:02:06,000 --> 00:02:08,810 Dus denk dat we moeten eerst doen dit topniveau. 36 00:02:08,810 --> 00:02:11,620 37 00:02:11,620 --> 00:02:18,500 >> Hier zijn we itereren van de topniveau, rij 8, voortgezet 38 00:02:18,500 --> 00:02:22,150 totdat rij 0 bereikt. 39 00:02:22,150 --> 00:02:25,820 Hoeveel ruimte hebben we nodig om af te drukken in die bovenste rij? 40 00:02:25,820 --> 00:02:29,310 We gedrukt zeven ruimtes en twee hashes. 41 00:02:29,310 --> 00:02:34,450 Dus het aantal spaties we willen is de rij die op min 1 waren. 42 00:02:34,450 --> 00:02:39,310 >> Als de bovenste rij is 8, 8 min 1 geeft ons zeven ruimtes. 43 00:02:39,310 --> 00:02:43,770 Dan hebben we een lus die wordt afgedrukt uit elke ruimte een voor een. 44 00:02:43,770 --> 00:02:47,450 Dus wanneer ruimten is 7, deze lus zeven keer, afdrukken 45 00:02:47,450 --> 00:02:50,300 zeven afzonderlijke ruimtes. 46 00:02:50,300 --> 00:02:54,672 >> Dus nu moeten we deze hashes te printen aan het einde van de piramide. 47 00:02:54,672 --> 00:02:57,930 Dus hier moeten we berekenen het aantal hashes. 48 00:02:57,930 --> 00:03:01,930 We zien dat we hoogte doet minus rij plus 2. 49 00:03:01,930 --> 00:03:04,170 Dus hoe hebben we dat krijgen? 50 00:03:04,170 --> 00:03:08,630 >> Herinner dat de top van de piramide is rij 8, en de hoogte is 8. 51 00:03:08,630 --> 00:03:10,890 En we nog steeds gedrukt twee hashes. 52 00:03:10,890 --> 00:03:15,420 Dus op zijn minst 8 min 8 plus 2 geeft ons het juiste antwoord. 53 00:03:15,420 --> 00:03:19,170 En overweeg dan de onderste van de piramide, rij 1. 54 00:03:19,170 --> 00:03:24,020 Hoogte min rij zal ons 7 geven, en dan plus 2 geeft ons negen hashes, 55 00:03:24,020 --> 00:03:26,620 die precies getal van hashes die we gedrukt. 56 00:03:26,620 --> 00:03:29,880 Dus dit is de formule die we willen gebruiken om het aantal te berekenen 57 00:03:29,880 --> 00:03:32,220 hashes in elke rij. 58 00:03:32,220 --> 00:03:36,020 >> Met behulp van dat aantal, dan hebben we een andere lus, zeer vergelijkbaar met de 59 00:03:36,020 --> 00:03:41,270 voor lus die we hebben gebruikt voor de ruimtes, dat herhaalt aantal hashes keren 60 00:03:41,270 --> 00:03:43,720 printen van een enkele hash elke keer. 61 00:03:43,720 --> 00:03:46,010 Op de bovenste rij, dat zal afdrukken op twee hashes. 62 00:03:46,010 --> 00:03:48,390 Op de onderste rij, dat zal afdrukken negen hashes. 63 00:03:48,390 --> 00:03:52,610 En elke andere rij elke prent aantal hashes in tussen. 64 00:03:52,610 --> 00:03:57,340 >> En dan helemaal aan het eind, moeten we print onze nieuwe lijn te gaan naar de volgende 65 00:03:57,340 --> 00:03:59,400 rij in de piramide. 66 00:03:59,400 --> 00:04:03,070 Tot slot moeten we de nieuwe lijn af te drukken aan het eind van de rij om 67 00:04:03,070 --> 00:04:06,260 verder naar de volgende rij van de piramide. 68 00:04:06,260 --> 00:04:08,980 En aan het einde van ons programma, hebben we de return 0. 69 00:04:08,980 --> 00:04:12,770 >> Zoals aangegeven in de PSET spec, de terugkeer 0 is niet strikt noodzakelijk. 70 00:04:12,770 --> 00:04:15,710 Maar het hoeft te betekenen dat de belangrijkste is gedaan. 71 00:04:15,710 --> 00:04:17,610 Mijn naam is Rob, en dit was Mario. 72 00:04:17,610 --> 00:04:22,470 >> [Muziek] 73 00:04:22,470 --> 00:04:25,558