1 00:00:00,000 --> 00:00:00,982 2 00:00:00,982 --> 00:00:11,293 >> [MUZIKO Ludanta] 3 00:00:11,293 --> 00:00:13,580 >> ROB Bowden: Ĝi estas mi, Rob. 4 00:00:13,580 --> 00:00:16,540 Ni marŝas tra kiom apliki Mario. 5 00:00:16,540 --> 00:00:21,040 Do la unua afero, kiun ni devas fari estas suflori la uzanto por la enigo. 6 00:00:21,040 --> 00:00:24,440 >> Ni devas demandi ilin ekzakte kiel altkreska la piramido devus esti. 7 00:00:24,440 --> 00:00:27,110 Do jen, ni vidas ni faras alto = GetInt. 8 00:00:27,110 --> 00:00:32,479 An Kaj memoru, ke la GetInt funkcio estas implementado en la CS50 9 00:00:32,479 --> 00:00:38,060 biblioteko, do supren supro, ni bezonas memori # include cs50.h. 10 00:00:38,060 --> 00:00:41,360 >> Do kial ni havas ĉi envolvita en la do-while buklo? 11 00:00:41,360 --> 00:00:45,080 Nu, ni bezonas ankaŭ memori ke la uzanto enigo devas esti valida. 12 00:00:45,080 --> 00:00:46,910 Kio estas nevalida enigo? 13 00:00:46,910 --> 00:00:51,460 Nu la pset spec specife diras ke altecon malpli ol 0 aŭ pli granda 14 00:00:51,460 --> 00:00:54,530 ol 23 estas malvalida. 15 00:00:54,530 --> 00:00:59,030 >> Do supren ĉi tien, ni vidas ke ni difini konstanta nomata MAX_HEIGHT kun la 16 00:00:59,030 --> 00:01:00,750 valoro de 23. 17 00:01:00,750 --> 00:01:06,380 Tiu do-dum buklo daŭrigos dum alteco estas malpli ol 0 aŭ MAX_HEIGHT estas 18 00:01:06,380 --> 00:01:11,870 malpli ol alteco, kio signifas, ke 23 estas malpli ol la alteco. 19 00:01:11,870 --> 00:01:15,390 Do, se alto estas 24 aŭ pli grandaj, ni estas tuj daŭrigi looping. 20 00:01:15,390 --> 00:01:18,300 Memoru ke do-dum masxojn estas bela helpema kiam ajn ni volas akiri 21 00:01:18,300 --> 00:01:22,070 uzanto enigo kaj poste validigi ĝin, pro ni neeviteble devas demandi al la uzanto ĉe 22 00:01:22,070 --> 00:01:25,010 Almenaŭ unufoje por la valoro ili volas. 23 00:01:25,010 --> 00:01:28,500 >> Do iam ni havos sian eniron, ni povas nun konstrui la piramido. 24 00:01:28,500 --> 00:01:31,940 Unu el la atutoj de tiu problemo metita estas ke ni devas komenci ĉe la supro de 25 00:01:31,940 --> 00:01:32,750 la piramido. 26 00:01:32,750 --> 00:01:36,800 Vi ne povas printf la fundo de la piramido kaj tiam konstrui vian vojon supren. 27 00:01:36,800 --> 00:01:38,830 Do ni rigardu la ekzemplo el la pset spec. 28 00:01:38,830 --> 00:01:41,530 29 00:01:41,530 --> 00:01:45,430 >> Oni vidas ĉi tie ke kiam ni eniros alteco de 8, la tre fundo de la 30 00:01:45,430 --> 00:01:48,660 piramido presas naŭ hashes. 31 00:01:48,660 --> 00:01:52,990 Unu nivelon supren el tiu printaĵoj unu spaco kaj ok hashes. 32 00:01:52,990 --> 00:01:58,250 Unu nivelon supren for de kiu estas du spacoj kaj sep hashes, la tuta vojo, ĝis ni 33 00:01:58,250 --> 00:02:03,050 atingi la supron de la piramido, kiu estas ok niveloj supren, kiu videbligas sep 34 00:02:03,050 --> 00:02:06,000 spacoj kaj du hashes. 35 00:02:06,000 --> 00:02:08,810 Do memoru, ke ni devas fari ĉi supro nivelo unue. 36 00:02:08,810 --> 00:02:11,620 37 00:02:11,620 --> 00:02:18,500 >> Ĉi tie ni ripetanta el la supera nivelo, vico 8, daŭrigante 38 00:02:18,500 --> 00:02:22,150 ĝis vico atingas 0. 39 00:02:22,150 --> 00:02:25,820 Do kiom da spacoj ni bezonas presi en tiu supera vico? 40 00:02:25,820 --> 00:02:29,310 Ni presas sep spacoj kaj du hashes. 41 00:02:29,310 --> 00:02:34,450 Do la nombro de spacoj ni volas estas la vico, kiuj estis sur minus 1. 42 00:02:34,450 --> 00:02:39,310 >> Se la supro vico estas 8, 8 minus 1 donas al ni sep spacetoj. 43 00:02:39,310 --> 00:02:43,770 Tiam ni havas buklo ke presos el ĉiu spaco unuope. 44 00:02:43,770 --> 00:02:47,450 Do kiam spacoj estas 7, ĉi tiu ciklo sep fojojn, impreso 45 00:02:47,450 --> 00:02:50,300 sep individuajn spacoj. 46 00:02:50,300 --> 00:02:54,672 >> Do nun ni devas presi tiujn hashes ĉe la fino de la piramido. 47 00:02:54,672 --> 00:02:57,930 Do jen, ni bezonas por kalkuli la nombro de hashes. 48 00:02:57,930 --> 00:03:01,930 Ni vidas, ke ni faras alteco minus vico plus 2. 49 00:03:01,930 --> 00:03:04,170 Do kiamaniere ni atingos tion? 50 00:03:04,170 --> 00:03:08,630 >> Memoru ke la supro de la piramido estas vico 8, kaj la alto estas 8. 51 00:03:08,630 --> 00:03:10,890 Kaj ni ankoraŭ presita du hashes. 52 00:03:10,890 --> 00:03:15,420 Do almenaŭ, 8 minus 8 plus 2 donas al ni la ĝustan respondon. 53 00:03:15,420 --> 00:03:19,170 Kaj tiam konsideri la malsupro de la piramido, remi 1. 54 00:03:19,170 --> 00:03:24,020 Alteco minus vico nin donos 7, kaj tiam plus 2 donas al ni naŭ hashes, 55 00:03:24,020 --> 00:03:26,620 kio estas ekzakte la nombron de hashes ke ni presita. 56 00:03:26,620 --> 00:03:29,880 Do tiu estas la formulo ni volas uzi por kalkuli la nombron 57 00:03:29,880 --> 00:03:32,220 hashes en ĉiu vico. 58 00:03:32,220 --> 00:03:36,020 >> Uzante tiun numeron, ni tiam havi alian buklo, tre simila al la 59 00:03:36,020 --> 00:03:41,270 por buklo kiun ni uzis por la spacoj, kiuj ripetas nombron de hashes fojoj 60 00:03:41,270 --> 00:03:43,720 presi sola hash ĉiufoje. 61 00:03:43,720 --> 00:03:46,010 Sur supro vico, tio estos presi du hashes. 62 00:03:46,010 --> 00:03:48,390 Sur la funda linio, kiu timige presi naŭ hashes. 63 00:03:48,390 --> 00:03:52,610 Kaj reciproke vico presos ĉiu numeron de hashes en inter. 64 00:03:52,610 --> 00:03:57,340 >> Kaj poste, je la fino, ni devas presi nia nova linio por iri al la sekvanta 65 00:03:57,340 --> 00:03:59,400 remi en la piramido. 66 00:03:59,400 --> 00:04:03,070 Fine, ni devas presi la nova linio ĉe la fino de la vico por 67 00:04:03,070 --> 00:04:06,260 daŭrigi al la venonta vico de la piramido. 68 00:04:06,260 --> 00:04:08,980 Kaj je la fino de nia programo, ni havas la reveno 0. 69 00:04:08,980 --> 00:04:12,770 >> Kiel por la pset spec, la reveno 0 estas ne strikte necesaj. 70 00:04:12,770 --> 00:04:15,710 Sed tio ne signifas, ke ĉefaj estas farita. 71 00:04:15,710 --> 00:04:17,610 Mia nomo estas Rob, kaj tio estis por Mario. 72 00:04:17,610 --> 00:04:22,470 >> [MUZIKO Ludanta] 73 00:04:22,470 --> 00:04:25,558