1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [MUZIK Bermain] 3 00:00:11,431 --> 00:00:12,500 >> ROB Bowden: Hi. 4 00:00:12,500 --> 00:00:13,230 Saya Rob. 5 00:00:13,230 --> 00:00:15,080 Dan mari kita Tamak. 6 00:00:15,080 --> 00:00:18,560 >> Jadi perkara pertama yang perlu kita lakukan adalah meminta pengguna dengan tepat bagaimana 7 00:00:18,560 --> 00:00:20,500 perubahan banyak yang terhutang. 8 00:00:20,500 --> 00:00:23,310 Jadi di sini, kita melihat kita mempunyai -buat / manakala gelung. 9 00:00:23,310 --> 00:00:26,650 Dan kami menetapkan dolar sama dengan GetFloat. 10 00:00:26,650 --> 00:00:27,890 Apakah GetFloat? 11 00:00:27,890 --> 00:00:30,700 Ia adalah salah satu fungsi dalam Perpustakaan CS50 yang mendapat 12 00:00:30,700 --> 00:00:32,450 terapung daripada pengguna. 13 00:00:32,450 --> 00:00:35,200 Ingat, untuk menggunakan fungsi itu, kita perlu hash termasuk 14 00:00:35,200 --> 00:00:37,790 CS50.h di bahagian atas. 15 00:00:37,790 --> 00:00:42,310 >> Jadi sebaik sahaja kami mempunyai nilai yang dari pengguna, kita juga perlu memastikan bahawa 16 00:00:42,310 --> 00:00:43,560 nilai itu yang sah. 17 00:00:43,560 --> 00:00:46,050 Kita tidak boleh berhutang wang negatif. 18 00:00:46,050 --> 00:00:48,460 Dan jadi itulah tujuan daripada tugasan ini / manakala gelung. 19 00:00:48,460 --> 00:00:52,420 Kami terus menggelung manakala dolar adalah kurang daripada sifar. 20 00:00:52,420 --> 00:00:56,960 Dan / manakala gelung adalah perkara yang betul do untuk digunakan di sini, kerana kita perlu bertanya 21 00:00:56,960 --> 00:01:00,290 pengguna sekurang-kurangnya sekali untuk bagaimana banyak wang yang terhutang. 22 00:01:00,290 --> 00:01:05,040 >> Jadi sebaik sahaja kami mempunyai nombor yang dolar, kita lihat di sini kita mempunyai sen int 23 00:01:05,040 --> 00:01:08,630 sama pusingan dolar kali CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 Di bahagian atas, kita lihat bahawa CENTS_PER_DOLLAR adalah 25 00:01:10,740 --> 00:01:13,750 bijaksana ditakrifkan sebagai 100. 26 00:01:13,750 --> 00:01:16,270 Jadi apa yang baris ini lakukan? 27 00:01:16,270 --> 00:01:21,200 >> Nah, jika anda masih ingat, titik terapung nilai-nilai tidak cukup tepat. 28 00:01:21,200 --> 00:01:25,470 Tidak seperti integer, kita tidak boleh mewakili mata yang terapung tepat. 29 00:01:25,470 --> 00:01:28,660 Selalu ada beberapa jenis daripada ketakpersisan. 30 00:01:28,660 --> 00:01:32,840 Oleh itu, kita lebih suka bekerja dengan hanya integer seluruh masalah ini. 31 00:01:32,840 --> 00:01:42,690 Dan di sini, jika pengguna memasuki $ 3,42, kita menukar bahawa untuk 342 sen dan 32 00:01:42,690 --> 00:01:45,900 pembundaran, hanya menghapuskan mana-mana ketakpersisan itu. 33 00:01:45,900 --> 00:01:49,940 >> Jadi sebaik sahaja kami mempunyai bilangan sen dalam integer, kita boleh terus dengan 34 00:01:49,940 --> 00:01:51,730 sepanjang program ini. 35 00:01:51,730 --> 00:01:55,910 Kita lihat di sini bahawa kita mengisytiharkan integer syiling yang kami hanya menggunakan 36 00:01:55,910 --> 00:01:59,560 untuk mengesan jumlah keseluruhan beberapa syiling. 37 00:01:59,560 --> 00:02:01,590 Di sini, kita mempunyai gelung sementara pertama kami. 38 00:02:01,590 --> 00:02:06,780 >> Kita melihat manakala sen adalah lebih besar daripada atau sama dengan suku, yang di atas, adalah hash 39 00:02:06,780 --> 00:02:14,680 ditakrifkan sebagai 25, manakala yang benar, kita mahu menaikkan nombor kami syiling 40 00:02:14,680 --> 00:02:18,350 dan sen susutan oleh suku. 41 00:02:18,350 --> 00:02:22,810 Ingat bahawa sintaks ini adalah bersamaan dengan sen 42 00:02:22,810 --> 00:02:26,020 sama sen tolak suku. 43 00:02:26,020 --> 00:02:28,170 Mereka adalah sama. 44 00:02:28,170 --> 00:02:31,850 >> Jadi apa yang gelung selama ini lakukan? 45 00:02:31,850 --> 00:02:39,260 Idea di sini adalah bahawa, jika saya tahu $ 3,42 yang berhutang, saya boleh terus memberi 46 00:02:39,260 --> 00:02:42,670 pihak sehingga saya tidak boleh memberi suku lagi. 47 00:02:42,670 --> 00:02:47,720 Saya tidak boleh memberikan suku lagi, sebaik sahaja saya telah diberi $ 3.25. 48 00:02:47,720 --> 00:02:53,300 >> Jadi kemudian, sekali itu berlaku, kita akan keluar daripada gelung selama ini. 49 00:02:53,300 --> 00:02:57,650 Cents akan ditinggalkan pada 17 sen. 50 00:02:57,650 --> 00:03:01,910 Dan kami akan terus ke bawah ke depan manakala gelung di mana kita katakan, manakala sen 51 00:03:01,910 --> 00:03:04,270 adalah lebih besar daripada atau sama dengan murah. 52 00:03:04,270 --> 00:03:07,420 >> Dan sekarang kita lakukan yang sama tepat perkara yang kami lakukan terhadap suku, 53 00:03:07,420 --> 00:03:09,010 kecuali dengan dimes. 54 00:03:09,010 --> 00:03:15,050 Jadi dengan $ 0,17, kita akan gelung sehingga kita boleh tidak lagi memberikan murah, yang merupakan 55 00:03:15,050 --> 00:03:16,680 hanya sekali. 56 00:03:16,680 --> 00:03:20,470 Dan kemudian kita akan ditinggalkan dengan 7 sen. 57 00:03:20,470 --> 00:03:24,730 >> Kemudian kami akan terus ke Nickels, yang akan gelung sehingga kita tidak dapat memberikan 58 00:03:24,730 --> 00:03:29,420 lagi Nickels, yang akan meninggalkan kita dengan dua sen. 59 00:03:29,420 --> 00:03:34,400 Dan kemudian, turun di bahagian bawah, kita mempunyai beberapa sen, yang akan gelung dan akan 60 00:03:34,400 --> 00:03:37,140 akhirnya meninggalkan kita dengan sifar sen. 61 00:03:37,140 --> 00:03:41,670 Kemudian pada akhirnya, kita hanya perlu mencetak bilangan kami syiling. 62 00:03:41,670 --> 00:03:44,980 >> Jadi program ini adalah betul-betul. 63 00:03:44,980 --> 00:03:47,310 Tetapi kita sebenarnya boleh melakukan sedikit lebih baik. 64 00:03:47,310 --> 00:03:52,660 Sekarang, jika saya mengatakan bahawa saya berhutang $ 10,000, anda tidak perlu untuk pergi inilah satu 65 00:03:52,660 --> 00:03:55,310 suku, dua suku, tiga suku. 66 00:03:55,310 --> 00:03:59,450 Anda perlu tahu serta-merta bahawa Saya berhutang anda 40,000 pihak. 67 00:03:59,450 --> 00:04:04,070 >> Sekarang mari kita lihat program yang mengendalikan ia sedikit lebih baik. 68 00:04:04,070 --> 00:04:07,190 Dalam versi ini perkara, kita masih perlu untuk meminta pengguna untuk jumlah 69 00:04:07,190 --> 00:04:10,930 menukar yang mereka mahu betul-betul dengan cara yang sama yang kita lakukan sebelum ini. 70 00:04:10,930 --> 00:04:14,110 Kita perlu ke pusingan ia betul-betul cara kita lakukan sebelum ini. 71 00:04:14,110 --> 00:04:17,910 Dan kita masih mempunyai syiling kami integer diisytiharkan sama seperti sebelum ini. 72 00:04:17,910 --> 00:04:21,399 >> Jadi di sini di mana perkara-perkara mendapatkan sedikit berbeza. 73 00:04:21,399 --> 00:04:24,640 Kami melakukan syiling ditambah setaraf sen dibahagikan dengan suku 74 00:04:24,640 --> 00:04:27,140 di mana suku ialah 25. 75 00:04:27,140 --> 00:04:31,790 Apa ini berkata demikian mengambil seberapa banyak pihak sebagai boleh pergi ke sen dan menambah 76 00:04:31,790 --> 00:04:33,030 bahawa untuk syiling. 77 00:04:33,030 --> 00:04:40,100 >> Jadi jika sen adalah 142, 142 dibahagikan sebanyak 25 memberikan kita 5. 78 00:04:40,100 --> 00:04:43,950 Ingat bahawa bahagian integer secara automatik truncates. 79 00:04:43,950 --> 00:04:46,870 Oleh itu, kita lakukan syiling ditambah sama dengan 5. 80 00:04:46,870 --> 00:04:51,850 >> Sejurus selepas ini, kita katakan sen sen sama suku arena. 81 00:04:51,850 --> 00:04:57,150 Ingat bahawa pengendali arena memberikan kami selebihnya pembahagian. 82 00:04:57,150 --> 00:05:05,840 Jadi 142 suku arena, yang akan memberi adalah 142 tolak 125, yang merupakan 17. 83 00:05:05,840 --> 00:05:10,470 Itulah bakinya selepas melakukan 142 dibahagikan dengan 25. 84 00:05:10,470 --> 00:05:13,040 >> Jadi sekarang sen adalah sama dengan 17. 85 00:05:13,040 --> 00:05:16,080 Dan kami melakukan yang tepat sama perkara yang dimes. 86 00:05:16,080 --> 00:05:18,620 17 dibahagikan dengan 10 akan memberikan kita 1. 87 00:05:18,620 --> 00:05:20,150 Dan kita menambah bahawa untuk syiling. 88 00:05:20,150 --> 00:05:25,380 Dan kemudian kita mengemaskini sen kepada menjadi 17 arena 10, yang ialah 7. 89 00:05:25,380 --> 00:05:27,200 >> Dan kemudian yang sama untuk Nickels. 90 00:05:27,200 --> 00:05:29,180 7 dibahagikan dengan 5 ialah 1. 91 00:05:29,180 --> 00:05:30,880 Tambah bahawa syiling. 92 00:05:30,880 --> 00:05:34,600 Dan kemudian 7 mod 5 ialah 2. 93 00:05:34,600 --> 00:05:35,910 Dan itu sen kami. 94 00:05:35,910 --> 00:05:39,065 >> Dan kemudian, untuk beberapa sen, tidak ada sebenar titik dalam pemisah atau modding, kerana, 95 00:05:39,065 --> 00:05:42,170 jika kita mempunyai $ 0,2 ditinggalkan, kita boleh hanya segera menambah bahawa untuk 96 00:05:42,170 --> 00:05:43,590 bilangan kami syiling. 97 00:05:43,590 --> 00:05:48,210 Dan akhirnya, kita perlu untuk mencetak kami beberapa syiling dan, pilihan, 98 00:05:48,210 --> 00:05:52,100 kembali 0 pada akhir program kami untuk menandakan segala-galanya. 99 00:05:52,100 --> 00:05:53,120 >> Nama saya Rob. 100 00:05:53,120 --> 00:05:54,020 Dan ini adalah Tamak. 101 00:05:54,020 --> 00:05:57,620 >> [MUZIK Bermain] 102 00:05:57,620 --> 00:06:01,515