1 00:00:00,000 --> 00:00:00,982 2 00:00:00,982 --> 00:00:11,293 >> [MUSIC PLAYING] 3 00:00:11,293 --> 00:00:13,580 >> ROB Bowden: Ini aku, Rob. 4 00:00:13,580 --> 00:00:16,540 Mari kita berjalan melalui bagaimana untuk melaksanakan Mario. 5 00:00:16,540 --> 00:00:21,040 Jadi hal pertama yang perlu kita lakukan adalah meminta pengguna untuk input. 6 00:00:21,040 --> 00:00:24,440 >> Kita perlu meminta mereka persis bagaimana tinggi piramida seharusnya. 7 00:00:24,440 --> 00:00:27,110 Jadi di sini, kita melihat kita lakukan height = getInt. 8 00:00:27,110 --> 00:00:32,479 Sebuah Dan ingat bahwa fungsi getInt diimplementasikan dalam CS50 9 00:00:32,479 --> 00:00:38,060 perpustakaan, sehingga di bagian atas, kita perlu ingat untuk # include cs50.h. 10 00:00:38,060 --> 00:00:41,360 >> Jadi mengapa kita harus ini dibungkus dalam loop do-while? 11 00:00:41,360 --> 00:00:45,080 Nah, kita juga perlu ingat bahwa input pengguna harus valid. 12 00:00:45,080 --> 00:00:46,910 Apakah yang dimaksud dengan input tidak valid? 13 00:00:46,910 --> 00:00:51,460 Nah pset spesifikasi khusus mengatakan bahwa ketinggian kurang dari 0 atau lebih besar 14 00:00:51,460 --> 00:00:54,530 dari 23 tidak valid. 15 00:00:54,530 --> 00:00:59,030 >> Jadi di sini, kita melihat bahwa kita mendefinisikan konstan disebut MAX_HEIGHT dengan 16 00:00:59,030 --> 00:01:00,750 nilai 23. 17 00:01:00,750 --> 00:01:06,380 Ini lingkaran do-while akan terus sementara ketinggian kurang dari 0 atau MAX_HEIGHT adalah 18 00:01:06,380 --> 00:01:11,870 kurang dari ketinggian, yang berarti bahwa 23 kurang dari ketinggian. 19 00:01:11,870 --> 00:01:15,390 Jadi jika tinggi adalah 24 atau lebih besar, kami akan terus looping. 20 00:01:15,390 --> 00:01:18,300 Ingat bahwa do-while loop cukup membantu setiap kali kita ingin mendapatkan 21 00:01:18,300 --> 00:01:22,070 input pengguna dan kemudian memvalidasi itu, karena mau tak mau kita harus meminta pengguna di 22 00:01:22,070 --> 00:01:25,010 setidaknya sekali untuk nilai yang mereka inginkan. 23 00:01:25,010 --> 00:01:28,500 >> Jadi, sekali kita memiliki masukan mereka, kita sekarang dapat membangun piramida. 24 00:01:28,500 --> 00:01:31,940 Salah satu trik dari masalah ini adalah mengatur bahwa kita harus mulai di bagian atas 25 00:01:31,940 --> 00:01:32,750 piramida. 26 00:01:32,750 --> 00:01:36,800 Anda tidak dapat printf bagian bawah piramida dan kemudian membangun cara anda. 27 00:01:36,800 --> 00:01:38,830 Jadi mari kita lihat contoh dari pset spec. 28 00:01:38,830 --> 00:01:41,530 29 00:01:41,530 --> 00:01:45,430 >> Kita lihat di sini bahwa ketika kita memasuki ketinggian 8, bagian paling bawah dari 30 00:01:45,430 --> 00:01:48,660 piramida mencetak sembilan hash. 31 00:01:48,660 --> 00:01:52,990 Satu tingkat dari yang dicetak satu ruang dan delapan hash. 32 00:01:52,990 --> 00:01:58,250 Satu tingkat dari yang dua spasi dan tujuh hash, sepanjang jalan sampai kita 33 00:01:58,250 --> 00:02:03,050 sampai ke puncak piramida, yang delapan tingkat atas, yang mencetak tujuh 34 00:02:03,050 --> 00:02:06,000 ruang dan dua hash. 35 00:02:06,000 --> 00:02:08,810 Jadi ingat bahwa kita harus melakukan tingkat atas ini terlebih dahulu. 36 00:02:08,810 --> 00:02:11,620 37 00:02:11,620 --> 00:02:18,500 >> Di sini kita iterasi dari tingkat atas, baris 8, terus 38 00:02:18,500 --> 00:02:22,150 sampai baris mencapai 0. 39 00:02:22,150 --> 00:02:25,820 Jadi berapa banyak ruang yang kita butuhkan untuk mencetak dalam baris atas? 40 00:02:25,820 --> 00:02:29,310 Kami dicetak tujuh ruang dan dua hash. 41 00:02:29,310 --> 00:02:34,450 Jadi jumlah ruang yang kita inginkan adalah baris yang minus 1. 42 00:02:34,450 --> 00:02:39,310 >> Jika baris atas adalah 8, 8 dikurangi 1 memberi kita tujuh ruang. 43 00:02:39,310 --> 00:02:43,770 Kemudian kita memiliki loop yang akan mencetak keluar setiap ruang satu per satu. 44 00:02:43,770 --> 00:02:47,450 Jadi, ketika ruang adalah 7, lingkaran ini tujuh kali, pencetakan 45 00:02:47,450 --> 00:02:50,300 tujuh ruang individu. 46 00:02:50,300 --> 00:02:54,672 >> Jadi sekarang kita perlu untuk mencetak hash ini pada akhir piramida. 47 00:02:54,672 --> 00:02:57,930 Jadi di sini, kita perlu menghitung jumlah hash. 48 00:02:57,930 --> 00:03:01,930 Kita melihat bahwa kita melakukan tinggi baris dikurangi ditambah 2. 49 00:03:01,930 --> 00:03:04,170 Jadi bagaimana kita mendapatkan itu? 50 00:03:04,170 --> 00:03:08,630 >> Ingat bahwa puncak piramida adalah baris 8, dan tingginya 8. 51 00:03:08,630 --> 00:03:10,890 Dan kita masih dicetak dua hash. 52 00:03:10,890 --> 00:03:15,420 Jadi setidaknya, 8 minus 8 ditambah 2 memberi kita jawaban yang tepat. 53 00:03:15,420 --> 00:03:19,170 Dan kemudian mempertimbangkan bagian bawah piramida, baris 1. 54 00:03:19,170 --> 00:03:24,020 Tinggi dikurangi baris akan memberi kita 7, dan kemudian ditambah 2 memberi kita sembilan hash, 55 00:03:24,020 --> 00:03:26,620 yang persis nomor dari hash yang kami cetak. 56 00:03:26,620 --> 00:03:29,880 Jadi ini adalah rumus kita ingin gunakan untuk menghitung jumlah 57 00:03:29,880 --> 00:03:32,220 hash dalam setiap baris. 58 00:03:32,220 --> 00:03:36,020 >> Menggunakan nomor itu, kita kemudian memiliki lain untuk loop, sangat mirip dengan 59 00:03:36,020 --> 00:03:41,270 untuk loop yang kita digunakan untuk ruang, yang iterates jumlah hash kali 60 00:03:41,270 --> 00:03:43,720 mencetak hash tunggal setiap kali. 61 00:03:43,720 --> 00:03:46,010 Di baris atas, yang akan mencetak dua hash. 62 00:03:46,010 --> 00:03:48,390 Pada baris bawah, yang akan mencetak sembilan hash. 63 00:03:48,390 --> 00:03:52,610 Dan setiap baris lain akan mencetak setiap jumlah hash di antara. 64 00:03:52,610 --> 00:03:57,340 >> Dan kemudian di akhir, kita perlu mencetak baris baru kami untuk pergi ke berikutnya 65 00:03:57,340 --> 00:03:59,400 baris dalam piramida. 66 00:03:59,400 --> 00:04:03,070 Akhirnya, kita perlu untuk mencetak baris baru pada akhir baris untuk 67 00:04:03,070 --> 00:04:06,260 terus berikutnya baris piramida. 68 00:04:06,260 --> 00:04:08,980 Dan pada akhir program kami, kita memiliki return 0. 69 00:04:08,980 --> 00:04:12,770 >> Sesuai pset spec, pengembalian 0 adalah tidak benar-benar diperlukan. 70 00:04:12,770 --> 00:04:15,710 Tapi itu menandakan bahwa utama dilakukan. 71 00:04:15,710 --> 00:04:17,610 Nama saya Rob, dan ini adalah Mario. 72 00:04:17,610 --> 00:04:22,470 >> [MUSIC PLAYING] 73 00:04:22,470 --> 00:04:25,558