>> [MUZIK Bermain]
>> ROB Bowden: Hi.
Saya Rob.
Dan mari kita Tamak.
>> Jadi perkara pertama yang perlu kita lakukan adalah meminta pengguna dengan tepat bagaimana
perubahan banyak yang terhutang.
Jadi di sini, kita melihat kita mempunyai -buat / manakala gelung.
Dan kami menetapkan dolar sama dengan GetFloat.
Apakah GetFloat?
Ia adalah salah satu fungsi dalam Perpustakaan CS50 yang mendapat
terapung daripada pengguna.
Ingat, untuk menggunakan fungsi itu, kita perlu hash termasuk
CS50.h di bahagian atas.
>> Jadi sebaik sahaja kami mempunyai nilai yang dari pengguna, kita juga perlu memastikan bahawa
nilai itu yang sah.
Kita tidak boleh berhutang wang negatif.
Dan jadi itulah tujuan daripada tugasan ini / manakala gelung.
Kami terus menggelung manakala dolar adalah kurang daripada sifar.
Dan / manakala gelung adalah perkara yang betul do untuk digunakan di sini, kerana kita perlu bertanya
pengguna sekurang-kurangnya sekali untuk bagaimana banyak wang yang terhutang.
>> Jadi sebaik sahaja kami mempunyai nombor yang dolar, kita lihat di sini kita mempunyai sen int
sama pusingan dolar kali CENTS_PER_DOLLAR.
Di bahagian atas, kita lihat bahawa CENTS_PER_DOLLAR adalah
bijaksana ditakrifkan sebagai 100.
Jadi apa yang baris ini lakukan?
>> Nah, jika anda masih ingat, titik terapung nilai-nilai tidak cukup tepat.
Tidak seperti integer, kita tidak boleh mewakili mata yang terapung tepat.
Selalu ada beberapa jenis daripada ketakpersisan.
Oleh itu, kita lebih suka bekerja dengan hanya integer seluruh masalah ini.
Dan di sini, jika pengguna memasuki $ 3,42, kita menukar bahawa untuk 342 sen dan
pembundaran, hanya menghapuskan mana-mana ketakpersisan itu.
>> Jadi sebaik sahaja kami mempunyai bilangan sen dalam integer, kita boleh terus dengan
sepanjang program ini.
Kita lihat di sini bahawa kita mengisytiharkan integer syiling yang kami hanya menggunakan
untuk mengesan jumlah keseluruhan beberapa syiling.
Di sini, kita mempunyai gelung sementara pertama kami.
>> Kita melihat manakala sen adalah lebih besar daripada atau sama dengan suku, yang di atas, adalah hash
ditakrifkan sebagai 25, manakala yang benar, kita mahu menaikkan nombor kami syiling
dan sen susutan oleh suku.
Ingat bahawa sintaks ini adalah bersamaan dengan sen
sama sen tolak suku.
Mereka adalah sama.
>> Jadi apa yang gelung selama ini lakukan?
Idea di sini adalah bahawa, jika saya tahu $ 3,42 yang berhutang, saya boleh terus memberi
pihak sehingga saya tidak boleh memberi suku lagi.
Saya tidak boleh memberikan suku lagi, sebaik sahaja saya telah diberi $ 3.25.
>> Jadi kemudian, sekali itu berlaku, kita akan keluar daripada gelung selama ini.
Cents akan ditinggalkan pada 17 sen.
Dan kami akan terus ke bawah ke depan manakala gelung di mana kita katakan, manakala sen
adalah lebih besar daripada atau sama dengan murah.
>> Dan sekarang kita lakukan yang sama tepat perkara yang kami lakukan terhadap suku,
kecuali dengan dimes.
Jadi dengan $ 0,17, kita akan gelung sehingga kita boleh tidak lagi memberikan murah, yang merupakan
hanya sekali.
Dan kemudian kita akan ditinggalkan dengan 7 sen.
>> Kemudian kami akan terus ke Nickels, yang akan gelung sehingga kita tidak dapat memberikan
lagi Nickels, yang akan meninggalkan kita dengan dua sen.
Dan kemudian, turun di bahagian bawah, kita mempunyai beberapa sen, yang akan gelung dan akan
akhirnya meninggalkan kita dengan sifar sen.
Kemudian pada akhirnya, kita hanya perlu mencetak bilangan kami syiling.
>> Jadi program ini adalah betul-betul.
Tetapi kita sebenarnya boleh melakukan sedikit lebih baik.
Sekarang, jika saya mengatakan bahawa saya berhutang $ 10,000, anda tidak perlu untuk pergi inilah satu
suku, dua suku, tiga suku.
Anda perlu tahu serta-merta bahawa Saya berhutang anda 40,000 pihak.
>> Sekarang mari kita lihat program yang mengendalikan ia sedikit lebih baik.
Dalam versi ini perkara, kita masih perlu untuk meminta pengguna untuk jumlah
menukar yang mereka mahu betul-betul dengan cara yang sama yang kita lakukan sebelum ini.
Kita perlu ke pusingan ia betul-betul cara kita lakukan sebelum ini.
Dan kita masih mempunyai syiling kami integer diisytiharkan sama seperti sebelum ini.
>> Jadi di sini di mana perkara-perkara mendapatkan sedikit berbeza.
Kami melakukan syiling ditambah setaraf sen dibahagikan dengan suku
di mana suku ialah 25.
Apa ini berkata demikian mengambil seberapa banyak pihak sebagai boleh pergi ke sen dan menambah
bahawa untuk syiling.
>> Jadi jika sen adalah 142, 142 dibahagikan sebanyak 25 memberikan kita 5.
Ingat bahawa bahagian integer secara automatik truncates.
Oleh itu, kita lakukan syiling ditambah sama dengan 5.
>> Sejurus selepas ini, kita katakan sen sen sama suku arena.
Ingat bahawa pengendali arena memberikan kami selebihnya pembahagian.
Jadi 142 suku arena, yang akan memberi adalah 142 tolak 125, yang merupakan 17.
Itulah bakinya selepas melakukan 142 dibahagikan dengan 25.
>> Jadi sekarang sen adalah sama dengan 17.
Dan kami melakukan yang tepat sama perkara yang dimes.
17 dibahagikan dengan 10 akan memberikan kita 1.
Dan kita menambah bahawa untuk syiling.
Dan kemudian kita mengemaskini sen kepada menjadi 17 arena 10, yang ialah 7.
>> Dan kemudian yang sama untuk Nickels.
7 dibahagikan dengan 5 ialah 1.
Tambah bahawa syiling.
Dan kemudian 7 mod 5 ialah 2.
Dan itu sen kami.
>> Dan kemudian, untuk beberapa sen, tidak ada sebenar titik dalam pemisah atau modding, kerana,
jika kita mempunyai $ 0,2 ditinggalkan, kita boleh hanya segera menambah bahawa untuk
bilangan kami syiling.
Dan akhirnya, kita perlu untuk mencetak kami beberapa syiling dan, pilihan,
kembali 0 pada akhir program kami untuk menandakan segala-galanya.
>> Nama saya Rob.
Dan ini adalah Tamak.
>> [MUZIK Bermain]