1 00:00:00,000 --> 00:00:00,982 2 00:00:00,982 --> 00:00:11,293 >> [MUSIC SPIEL] 3 00:00:11,293 --> 00:00:13,580 >> ROB BOWDEN: Es ist mir, Rob. 4 00:00:13,580 --> 00:00:16,540 Lassen Sie uns durch, wie gehen Mario zu implementieren. 5 00:00:16,540 --> 00:00:21,040 Das erste, was wir tun müssen, ist fordert den Benutzer zur Eingabe. 6 00:00:21,040 --> 00:00:24,440 >> Wir müssen sie fragen, wie genau die Pyramide hoch sein sollte. 7 00:00:24,440 --> 00:00:27,110 So, hier sehen wir, wir tun height = GetInt. 8 00:00:27,110 --> 00:00:32,479 Ein Und denken Sie daran, dass die Funktion GetInt in der CS50 umgesetzt 9 00:00:32,479 --> 00:00:38,060 Bibliothek, so bis oben, müssen wir denken Sie daran, # include cs50.h. 10 00:00:38,060 --> 00:00:41,360 >> Also warum haben wir diese gewickelt in einer do-while-Schleife? 11 00:00:41,360 --> 00:00:45,080 Nun, wir müssen auch daran erinnern, dass Eingabe des Benutzers gültig sein. 12 00:00:45,080 --> 00:00:46,910 Was ist eine ungültige Eingabe? 13 00:00:46,910 --> 00:00:51,460 Nun, die pset spec sagt ausdrücklich dass eine Höhe kleiner als 0 oder größer 14 00:00:51,460 --> 00:00:54,530 als 23 ist ungültig. 15 00:00:54,530 --> 00:00:59,030 >> Also hier sehen wir, dass wir die Definition eine Konstante genannt MAX_HEIGHT mit der 16 00:00:59,030 --> 00:01:00,750 Wert von 23. 17 00:01:00,750 --> 00:01:06,380 Dieser do-while-Schleife wird weiterhin während Höhe kleiner als 0 ist oder MAX_HEIGHT 18 00:01:06,380 --> 00:01:11,870 weniger als der Höhe, was bedeutet, dass 23 ist kleiner als die Höhe. 19 00:01:11,870 --> 00:01:15,390 Also, wenn Höhe beträgt 24 oder mehr, wir sind werde weiterhin Looping. 20 00:01:15,390 --> 00:01:18,300 Beachten Sie, dass do-while-Schleifen sind ziemlich hilfsbereit, wenn wir wollen, um 21 00:01:18,300 --> 00:01:22,070 Benutzereingabe und dann zu validieren, da wir zwangsläufig müssen die Benutzer bei Fragen 22 00:01:22,070 --> 00:01:25,010 mindestens einmal für den Wert, den sie wollen. 23 00:01:25,010 --> 00:01:28,500 >> Also, sobald wir ihren Input, wir können jetzt bauen die Pyramide. 24 00:01:28,500 --> 00:01:31,940 Einer der Tricks des Problems gesetzt ist dass wir an der Spitze starten 25 00:01:31,940 --> 00:01:32,750 die Pyramide. 26 00:01:32,750 --> 00:01:36,800 Sie können den Boden nicht die printf Pyramide und dann bauen Sie sich. 27 00:01:36,800 --> 00:01:38,830 Also schauen wir uns am Beispiel von der pset spec. 28 00:01:38,830 --> 00:01:41,530 29 00:01:41,530 --> 00:01:45,430 >> Wir sehen hier, dass, wenn wir eine Höhe eingeben von 8, die ganz unten auf der 30 00:01:45,430 --> 00:01:48,660 Pyramide druckt neun Hashes. 31 00:01:48,660 --> 00:01:52,990 Ein Level aus, dass Drucke ein Leerzeichen und acht Hashes. 32 00:01:52,990 --> 00:01:58,250 Ein Level ist, dass aus zwei Räumen und sieben Hashes, den ganzen Weg, bis wir 33 00:01:58,250 --> 00:02:03,050 an die Spitze der Pyramide, das ist acht Stufen hinauf, die sieben druckt 34 00:02:03,050 --> 00:02:06,000 Plätze und zwei Hashes. 35 00:02:06,000 --> 00:02:08,810 Also denken Sie daran, dass wir zuerst tun diese Top-Niveau. 36 00:02:08,810 --> 00:02:11,620 37 00:02:11,620 --> 00:02:18,500 >> Hier sind wir von der Iteration Top-Level-, Reihe 8, weiter 38 00:02:18,500 --> 00:02:22,150 bis Zeile 0 erreicht. 39 00:02:22,150 --> 00:02:25,820 Also, wie viele Räume brauchten wir in dieser oberen Zeile zu drucken? 40 00:02:25,820 --> 00:02:29,310 Wir druckten sieben Räume und zwei Hashes. 41 00:02:29,310 --> 00:02:34,450 So ist die Zahl der Räume, die wir wollen, ist die Zeile, die auf minus 1 waren. 42 00:02:34,450 --> 00:02:39,310 >> Wenn die obere Zeile 8, 8 minus 1 gibt uns sieben Räume. 43 00:02:39,310 --> 00:02:43,770 Dann haben wir eine Schleife, die gedruckt werden aus jedem Raum ein zu einer Zeit. 44 00:02:43,770 --> 00:02:47,450 Also, wenn Räume 7 ist, diese Schleife siebenmal Druck 45 00:02:47,450 --> 00:02:50,300 sieben einzelne Räume. 46 00:02:50,300 --> 00:02:54,672 >> So, jetzt müssen wir diese Hashes ausdrucken am Ende der Pyramide. 47 00:02:54,672 --> 00:02:57,930 Also hier müssen wir berechnen die Anzahl von Hashes. 48 00:02:57,930 --> 00:03:01,930 Wir sehen, dass wir tun, Höhe minus Reihe plus 2. 49 00:03:01,930 --> 00:03:04,170 Also, wie kommen wir dazu? 50 00:03:04,170 --> 00:03:08,630 >> Denken Sie daran, dass die Spitze der Pyramide Reihe 8 ist, und die Höhe 8. 51 00:03:08,630 --> 00:03:10,890 Und wir haben noch zwei gedruckte Hashes. 52 00:03:10,890 --> 00:03:15,420 So zumindest, 8 minus 8 Plus 2 gibt uns die richtige Antwort. 53 00:03:15,420 --> 00:03:19,170 Und dann erwägen, die unten der Pyramide, Reihe 1. 54 00:03:19,170 --> 00:03:24,020 Höhe minus Zeile wird uns 7 und dann plus 2 gibt uns neun Hashes 55 00:03:24,020 --> 00:03:26,620 das ist genau die Anzahl von Hashes, dass wir gedruckt. 56 00:03:26,620 --> 00:03:29,880 Das ist also die Formel, die wir wollen verwenden, um die Zahl zu berechnen 57 00:03:29,880 --> 00:03:32,220 Hash-Werte in jeder Zeile. 58 00:03:32,220 --> 00:03:36,020 >> Mit Hilfe dieser Nummer, dann haben wir ein weiteres for-Schleife, ähnlich der 59 00:03:36,020 --> 00:03:41,270 for-Schleife, die wir für die Räume verwendet wird, dass läuft Anzahl der Hashes Zeiten 60 00:03:41,270 --> 00:03:43,720 Drucken einer einzelnen Hash jeder Zeit. 61 00:03:43,720 --> 00:03:46,010 Auf der oberen Reihe, das wird drucken zwei Hashes. 62 00:03:46,010 --> 00:03:48,390 Auf der unteren Reihe, das wird drucken neun Hashes. 63 00:03:48,390 --> 00:03:52,610 Und jede zweite Zeile wird jeder drucken Anzahl der Hashes dazwischen. 64 00:03:52,610 --> 00:03:57,340 >> Und dann am Ende, müssen wir drucken unsere neue Linie, um zum nächsten gehen 65 00:03:57,340 --> 00:03:59,400 Zeile in der Pyramide. 66 00:03:59,400 --> 00:04:03,070 Schließlich brauchen wir, um die neue Zeile zu drucken am Ende der Reihe, um 67 00:04:03,070 --> 00:04:06,260 weiter zum nächsten Reihe der Pyramide. 68 00:04:06,260 --> 00:04:08,980 Und am Ende unseres Programms, wir haben die return 0. 69 00:04:08,980 --> 00:04:12,770 >> Gemäß der pset spec, die Rückkehr 0 ist nicht unbedingt notwendig. 70 00:04:12,770 --> 00:04:15,710 Aber es muss bedeuten, dass die Haupt ist getan. 71 00:04:15,710 --> 00:04:17,610 Mein Name ist Rob, und das war Mario. 72 00:04:17,610 --> 00:04:22,470 >> [MUSIC SPIEL] 73 00:04:22,470 --> 00:04:25,558