1 00:00:00,000 --> 00:00:00,982 2 00:00:00,982 --> 00:00:11,293 >> [MUSIQUE JEU] 3 00:00:11,293 --> 00:00:13,580 >> ROB BOWDEN: C'est moi, Rob. 4 00:00:13,580 --> 00:00:16,540 Passons en revue la façon dont à mettre en oeuvre Mario. 5 00:00:16,540 --> 00:00:21,040 Donc la première chose que nous devons faire est inviter l'utilisateur à l'entrée. 6 00:00:21,040 --> 00:00:24,440 >> Nous devons leur demander exactement comment haut de la pyramide doit être. 7 00:00:24,440 --> 00:00:27,110 Donc, ici, nous voyons que nous faisons height = GetInt. 8 00:00:27,110 --> 00:00:32,479 Une Et n'oubliez pas que la fonction GetInt est mis en oeuvre dans le CS50 9 00:00:32,479 --> 00:00:38,060 bibliothèque, donc là-haut, nous avons besoin de n'oubliez pas de # include cs50.h. 10 00:00:38,060 --> 00:00:41,360 >> Alors pourquoi avons-nous ce enveloppé dans une boucle do-while? 11 00:00:41,360 --> 00:00:45,080 Eh bien, nous devons aussi nous rappeler que l'entrée de l'utilisateur doit être valide. 12 00:00:45,080 --> 00:00:46,910 Qu'est-ce qu'un invalide? 13 00:00:46,910 --> 00:00:51,460 Eh bien la spécification pset dit expressément que la hauteur est inférieure à 0 ou supérieure 14 00:00:51,460 --> 00:00:54,530 de 23 est invalide. 15 00:00:54,530 --> 00:00:59,030 >> Donc, ici, nous voyons que nous définissons une constante appelée MAX_HEIGHT avec l' 16 00:00:59,030 --> 00:01:00,750 valeur de 23. 17 00:01:00,750 --> 00:01:06,380 Cette boucle do-while continuera tout hauteur est inférieure à 0 ou est MAX_HEIGHT 18 00:01:06,380 --> 00:01:11,870 inférieure à la hauteur, ce qui signifie que La figure 23 est inférieure à la hauteur. 19 00:01:11,870 --> 00:01:15,390 Donc, si la hauteur est de 24 ou plus, nous sommes va continuer en boucle. 20 00:01:15,390 --> 00:01:18,300 Rappelez-vous que boucles do-while sont assez utile quand on veut obtenir 21 00:01:18,300 --> 00:01:22,070 saisie de l'utilisateur, puis valider, puisque nous devons inévitablement à demander à l'utilisateur à 22 00:01:22,070 --> 00:01:25,010 moins une fois pour la valeur qu'ils veulent. 23 00:01:25,010 --> 00:01:28,500 >> Donc, une fois que nous avons de leur entrée, nous peut maintenant construire la pyramide. 24 00:01:28,500 --> 00:01:31,940 Un des trucs de ce problème fixés est que nous devons commencer par le haut de 25 00:01:31,940 --> 00:01:32,750 la pyramide. 26 00:01:32,750 --> 00:01:36,800 On ne peut pas printf bas de la pyramide, puis construire votre chemin. 27 00:01:36,800 --> 00:01:38,830 Alors regardons l'exemple de la spécification pset. 28 00:01:38,830 --> 00:01:41,530 29 00:01:41,530 --> 00:01:45,430 >> Nous voyons ici que lorsque nous entrons dans une hauteur de 8, tout en bas de l' 30 00:01:45,430 --> 00:01:48,660 pyramide imprime neuf hachage. 31 00:01:48,660 --> 00:01:52,990 Un niveau au-dessus que les impressions un espace et huit tables de hachage. 32 00:01:52,990 --> 00:01:58,250 Un niveau au-dessus qui est deux espaces et sept tables de hachage, tout le chemin jusqu'à ce que nous 33 00:01:58,250 --> 00:02:03,050 atteindre le sommet de la pyramide, qui est huit niveaux, qui imprime jusqu'à sept 34 00:02:03,050 --> 00:02:06,000 espaces et deux tables de hachage. 35 00:02:06,000 --> 00:02:08,810 Alors, n'oubliez pas que nous avons à faire ce niveau supérieur en premier. 36 00:02:08,810 --> 00:02:11,620 37 00:02:11,620 --> 00:02:18,500 >> Ici, nous sommes itération de la haut niveau, ligne 8, continue 38 00:02:18,500 --> 00:02:22,150 jusqu'à ce que la ligne atteint 0. 39 00:02:22,150 --> 00:02:25,820 Alors combien de places ne nous besoin pour imprimer dans cette rangée du haut? 40 00:02:25,820 --> 00:02:29,310 Nous avons imprimé sept espaces et deux tables de hachage. 41 00:02:29,310 --> 00:02:34,450 Ainsi, le nombre de places que nous voulons est la ligne qui était sur moins 1. 42 00:02:34,450 --> 00:02:39,310 >> Si la première ligne est de 8, 8 moins 1 nous donne sept places. 43 00:02:39,310 --> 00:02:43,770 Ensuite, nous avons une boucle qui permet d'imprimer sur chacun de l'espace à la fois. 44 00:02:43,770 --> 00:02:47,450 Ainsi, lorsque les espaces sont 7, cette boucle sept fois, l'impression 45 00:02:47,450 --> 00:02:50,300 sept espaces individuels. 46 00:02:50,300 --> 00:02:54,672 >> Alors maintenant, nous devons imprimer ces hashes à la fin de la pyramide. 47 00:02:54,672 --> 00:02:57,930 Donc, ici, nous devons calculer le nombre de tables de hachage. 48 00:02:57,930 --> 00:03:01,930 Nous voyons que nous faisons hauteur rangée moins plus 2. 49 00:03:01,930 --> 00:03:04,170 Alors, comment sommes-nous arrivés là? 50 00:03:04,170 --> 00:03:08,630 >> Rappelez-vous que le sommet de la pyramide est la ligne 8, et la hauteur est de 8. 51 00:03:08,630 --> 00:03:10,890 Et nous avons encore imprimé deux tables de hachage. 52 00:03:10,890 --> 00:03:15,420 Donc, à tout le moins, 8 moins 8 plus 2 nous donne la bonne réponse. 53 00:03:15,420 --> 00:03:19,170 Et puis examiner le fond de la pyramide, la ligne 1. 54 00:03:19,170 --> 00:03:24,020 Hauteur moins rangée va nous donner 7, et alors plus 2 nous donne neuf hachage, 55 00:03:24,020 --> 00:03:26,620 qui est précisément le nombre de tables de hachage que nous avons imprimé. 56 00:03:26,620 --> 00:03:29,880 Donc, c'est la formule que nous voulons utiliser pour calculer le nombre 57 00:03:29,880 --> 00:03:32,220 hache dans chaque rangée. 58 00:03:32,220 --> 00:03:36,020 >> En utilisant ce numéro, nous avons alors une autre pour la boucle, très semblable à la 59 00:03:36,020 --> 00:03:41,270 pour la boucle que nous avons utilisé pour les espaces, qui parcourt nombre de tables de hachage fois 60 00:03:41,270 --> 00:03:43,720 l'impression d'un hachage unique à chaque fois. 61 00:03:43,720 --> 00:03:46,010 Sur la rangée du haut, cela va le imprimer deux tables de hachage. 62 00:03:46,010 --> 00:03:48,390 Sur la rangée du bas, cela va le imprimer neuf hachage. 63 00:03:48,390 --> 00:03:52,610 Et de l'autre rangée imprime chaque nombre de tables de hachage entre les deux. 64 00:03:52,610 --> 00:03:57,340 >> Et puis à la fin, nous devons imprimer notre nouvelle ligne pour aller à la prochaine 65 00:03:57,340 --> 00:03:59,400 rangée dans la pyramide. 66 00:03:59,400 --> 00:04:03,070 Enfin, nous devons imprimer la nouvelle ligne à la fin de la rangée afin d' 67 00:04:03,070 --> 00:04:06,260 continuer à la prochaine rangée de la pyramide. 68 00:04:06,260 --> 00:04:08,980 Et à la fin de notre programme, nous avons le retour 0. 69 00:04:08,980 --> 00:04:12,770 >> Comme pour la spécification pset, le retour 0 n'est pas strictement nécessaire. 70 00:04:12,770 --> 00:04:15,710 Mais cela ne signifie que le principal est fait. 71 00:04:15,710 --> 00:04:17,610 Mon nom est Rob, et ce fut Mario. 72 00:04:17,610 --> 00:04:22,470 >> [MUSIQUE JEU] 73 00:04:22,470 --> 00:04:25,558