>> [MUSIC PLAYING]
>> ROB Bowden: Ini aku, Rob.
Mari kita berjalan melalui bagaimana untuk melaksanakan Mario.
Jadi hal pertama yang perlu kita lakukan adalah meminta pengguna untuk input.
>> Kita perlu meminta mereka persis bagaimana tinggi piramida seharusnya.
Jadi di sini, kita melihat kita lakukan height = getInt.
Sebuah Dan ingat bahwa fungsi getInt diimplementasikan dalam CS50
perpustakaan, sehingga di bagian atas, kita perlu ingat untuk # include cs50.h.
>> Jadi mengapa kita harus ini dibungkus dalam loop do-while?
Nah, kita juga perlu ingat bahwa input pengguna harus valid.
Apakah yang dimaksud dengan input tidak valid?
Nah pset spesifikasi khusus mengatakan bahwa ketinggian kurang dari 0 atau lebih besar
dari 23 tidak valid.
>> Jadi di sini, kita melihat bahwa kita mendefinisikan konstan disebut MAX_HEIGHT dengan
nilai 23.
Ini lingkaran do-while akan terus sementara ketinggian kurang dari 0 atau MAX_HEIGHT adalah
kurang dari ketinggian, yang berarti bahwa 23 kurang dari ketinggian.
Jadi jika tinggi adalah 24 atau lebih besar, kami akan terus looping.
Ingat bahwa do-while loop cukup membantu setiap kali kita ingin mendapatkan
input pengguna dan kemudian memvalidasi itu, karena mau tak mau kita harus meminta pengguna di
setidaknya sekali untuk nilai yang mereka inginkan.
>> Jadi, sekali kita memiliki masukan mereka, kita sekarang dapat membangun piramida.
Salah satu trik dari masalah ini adalah mengatur bahwa kita harus mulai di bagian atas
piramida.
Anda tidak dapat printf bagian bawah piramida dan kemudian membangun cara anda.
Jadi mari kita lihat contoh dari pset spec.
>> Kita lihat di sini bahwa ketika kita memasuki ketinggian 8, bagian paling bawah dari
piramida mencetak sembilan hash.
Satu tingkat dari yang dicetak satu ruang dan delapan hash.
Satu tingkat dari yang dua spasi dan tujuh hash, sepanjang jalan sampai kita
sampai ke puncak piramida, yang delapan tingkat atas, yang mencetak tujuh
ruang dan dua hash.
Jadi ingat bahwa kita harus melakukan tingkat atas ini terlebih dahulu.
>> Di sini kita iterasi dari tingkat atas, baris 8, terus
sampai baris mencapai 0.
Jadi berapa banyak ruang yang kita butuhkan untuk mencetak dalam baris atas?
Kami dicetak tujuh ruang dan dua hash.
Jadi jumlah ruang yang kita inginkan adalah baris yang minus 1.
>> Jika baris atas adalah 8, 8 dikurangi 1 memberi kita tujuh ruang.
Kemudian kita memiliki loop yang akan mencetak keluar setiap ruang satu per satu.
Jadi, ketika ruang adalah 7, lingkaran ini tujuh kali, pencetakan
tujuh ruang individu.
>> Jadi sekarang kita perlu untuk mencetak hash ini pada akhir piramida.
Jadi di sini, kita perlu menghitung jumlah hash.
Kita melihat bahwa kita melakukan tinggi baris dikurangi ditambah 2.
Jadi bagaimana kita mendapatkan itu?
>> Ingat bahwa puncak piramida adalah baris 8, dan tingginya 8.
Dan kita masih dicetak dua hash.
Jadi setidaknya, 8 minus 8 ditambah 2 memberi kita jawaban yang tepat.
Dan kemudian mempertimbangkan bagian bawah piramida, baris 1.
Tinggi dikurangi baris akan memberi kita 7, dan kemudian ditambah 2 memberi kita sembilan hash,
yang persis nomor dari hash yang kami cetak.
Jadi ini adalah rumus kita ingin gunakan untuk menghitung jumlah
hash dalam setiap baris.
>> Menggunakan nomor itu, kita kemudian memiliki lain untuk loop, sangat mirip dengan
untuk loop yang kita digunakan untuk ruang, yang iterates jumlah hash kali
mencetak hash tunggal setiap kali.
Di baris atas, yang akan mencetak dua hash.
Pada baris bawah, yang akan mencetak sembilan hash.
Dan setiap baris lain akan mencetak setiap jumlah hash di antara.
>> Dan kemudian di akhir, kita perlu mencetak baris baru kami untuk pergi ke berikutnya
baris dalam piramida.
Akhirnya, kita perlu untuk mencetak baris baru pada akhir baris untuk
terus berikutnya baris piramida.
Dan pada akhir program kami, kita memiliki return 0.
>> Sesuai pset spec, pengembalian 0 adalah tidak benar-benar diperlukan.
Tapi itu menandakan bahwa utama dilakukan.
Nama saya Rob, dan ini adalah Mario.
>> [MUSIC PLAYING]