1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [MUSIC nagpe-play] 3 00:00:11,431 --> 00:00:12,500 >> Rob BOWDEN: Hi. 4 00:00:12,500 --> 00:00:13,230 Ako Rob. 5 00:00:13,230 --> 00:00:15,080 At sabihin makakuha ng sakim. 6 00:00:15,080 --> 00:00:18,560 >> Kaya ang unang bagay na kailangan naming gawin ay tanungin ang user kung paano mismo 7 00:00:18,560 --> 00:00:20,500 gaanong pagbabago ay inutang. 8 00:00:20,500 --> 00:00:23,310 Kaya dito, makikita natin na mayroon kami isang do / habang loop. 9 00:00:23,310 --> 00:00:26,650 At kami ay pagtatakda ng dolyar katumbas ng GetFloat. 10 00:00:26,650 --> 00:00:27,890 Ano ang GetFloat? 11 00:00:27,890 --> 00:00:30,700 Ito ay isa sa mga function sa CS50 library na hindi nakakaabala isang 12 00:00:30,700 --> 00:00:32,450 lumutang mula sa user. 13 00:00:32,450 --> 00:00:35,200 Tandaan, upang magamit na function, kailangan naming i-hash isama 14 00:00:35,200 --> 00:00:37,790 CS50.h sa tuktok. 15 00:00:37,790 --> 00:00:42,310 >> Kaya sa sandaling mayroon kaming halaga na mula sa gumagamit, kailangan din naming makatiyak na 16 00:00:42,310 --> 00:00:43,560 ito ay isang wastong halaga. 17 00:00:43,560 --> 00:00:46,050 Hindi namin maaaring may utang negatibong pera. 18 00:00:46,050 --> 00:00:48,460 At kaya iyon ang layunin ng ito do / habang loop. 19 00:00:48,460 --> 00:00:52,420 Patuloy naming looping habang dolyar Mas mababa sa zero. 20 00:00:52,420 --> 00:00:56,960 At isang do / habang loop ay ang tamang bagay gamitin dito, dahil kailangan namin upang hilingin sa 21 00:00:56,960 --> 00:01:00,290 gumagamit ng hindi bababa sa isang beses para sa kung paano magkano ang pera ay inutang. 22 00:01:00,290 --> 00:01:05,040 >> Kaya sa sandaling mayroon kaming na bilang ng mga dolyar, makikita natin dito mayroon kaming int cents 23 00:01:05,040 --> 00:01:08,630 ay katumbas ng pag-ikot dolyar beses CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 Sa tuktok, nakita namin na CENTS_PER_DOLLAR ay 25 00:01:10,740 --> 00:01:13,750 sa matinong paraan tinukoy bilang 100. 26 00:01:13,750 --> 00:01:16,270 Kaya kung ano ang linyang ito ay ginagawa? 27 00:01:16,270 --> 00:01:21,200 >> Well, kung matandaan mo, lumulutang na tuldok mga halaga ay hindi masyadong tumpak. 28 00:01:21,200 --> 00:01:25,470 Hindi tulad ng integer, hindi namin maaaring kumatawan mga halaga ng mga lumulutang na tuldok eksakto. 29 00:01:25,470 --> 00:01:28,660 Mayroong palaging isang uri ng imprecision. 30 00:01:28,660 --> 00:01:32,840 Kaya mas gusto namin upang gumana sa lamang integer sa buong ang problemang ito. 31 00:01:32,840 --> 00:01:42,690 At dito, kung ipinasok ng gumagamit ang $ 3.42, naka-convert namin na sa 342 sentimo at 32 00:01:42,690 --> 00:01:45,900 rounding, lamang mapupuksa ang alinman sa na imprecision. 33 00:01:45,900 --> 00:01:49,940 >> Kaya sa sandaling mayroon kaming ang bilang ng mga cents sa isang integer, maaari naming magpatuloy sa 34 00:01:49,940 --> 00:01:51,730 nalalabing bahagi ng programa. 35 00:01:51,730 --> 00:01:55,910 Nakakakita kami dito na aming deklarasyon integer barya na lamang kami upang gamitin ang 36 00:01:55,910 --> 00:01:59,560 upang masubaybayan ang kabuuang bilang ng mga barya. 37 00:01:59,560 --> 00:02:01,590 Dito, mayroon kaming ang aming unang habang loop. 38 00:02:01,590 --> 00:02:06,780 >> Nakakakita kami habang cents ay mas malaki kaysa sa o katumbas ng isang-kapat, na sa itaas, ay hash 39 00:02:06,780 --> 00:02:14,680 tinukoy bilang 25, habang na ay totoo, kami gusto dagdagan ang aming bilang ng mga barya 40 00:02:14,680 --> 00:02:18,350 at pagbabawas sentimo sa pamamagitan ng isang-kapat. 41 00:02:18,350 --> 00:02:22,810 Tandaan na ang syntax na ito ay katumbas ng cents 42 00:02:22,810 --> 00:02:26,020 ay katumbas ng cents minus quarter. 43 00:02:26,020 --> 00:02:28,170 Yaong ay pareho. 44 00:02:28,170 --> 00:02:31,850 >> Kaya kung ano ito habang loop sa paggawa ay? 45 00:02:31,850 --> 00:02:39,260 Ang ideya dito ay na, kung alam ko $ 3.42 ay inutang, ang maaari kong patuloy na nagbibigay sa 46 00:02:39,260 --> 00:02:42,670 quarters hanggang hindi ko mabibigyan ng quarters ng anumang higit pa. 47 00:02:42,670 --> 00:02:47,720 Hindi ko mabibigyan ng quarters ng anumang higit pa, sa sandaling na ibinigay ko $ 3.25. 48 00:02:47,720 --> 00:02:53,300 >> Kaya pagkatapos, sa sandaling iyon ang kaso, kami ay masira out ng ito habang loop. 49 00:02:53,300 --> 00:02:57,650 Cents ay pakaliwa sa 17 cents. 50 00:02:57,650 --> 00:03:01,910 At patuloy naming pababa sa susunod habang loop kung saan kami sabihin, habang cents 51 00:03:01,910 --> 00:03:04,270 ay mas malaki kaysa sa o katumbas ng magagamit ng lahat. 52 00:03:04,270 --> 00:03:07,420 >> At ngayon ginagawa namin ang parehong eksaktong bagay ginawa namin sa quarter kaso, 53 00:03:07,420 --> 00:03:09,010 maliban sa dimes. 54 00:03:09,010 --> 00:03:15,050 Kaya sa $ 0.17, na aming loop hanggang sa aming makakaya hindi na bigyan ng barya, na kung saan ay 55 00:03:15,050 --> 00:03:16,680 eksaktong isang beses. 56 00:03:16,680 --> 00:03:20,470 At pagkatapos ay makikita iwanang namin na may 7 cents. 57 00:03:20,470 --> 00:03:24,730 >> Pagkatapos ay ipagpapatuloy sa naming nickels, na ay loop hanggang hindi ka namin mabibigyan 58 00:03:24,730 --> 00:03:29,420 anumang higit pang mga nickels, na mag-iwan sa amin ng dalawang sentimos. 59 00:03:29,420 --> 00:03:34,400 At pagkatapos, down sa ibaba, mayroon kami pennies, na loop at magpo 60 00:03:34,400 --> 00:03:37,140 sa wakas ay mag-iwan sa amin na may mga zero cents. 61 00:03:37,140 --> 00:03:41,670 Pagkatapos sa dulo, kailangan lang namin sa i-print ang aming mga bilang ng mga barya. 62 00:03:41,670 --> 00:03:44,980 >> Kaya ang program na ito ay ganap na ganap tama. 63 00:03:44,980 --> 00:03:47,310 Ngunit talaga namin maaaring gawin ang isang bit mas mahusay. 64 00:03:47,310 --> 00:03:52,660 Ngayon kung sinasabi ko na mayroon kang dapat ako $ 10,000, hindi ka dapat kailangan upang pumunta narito ang isa 65 00:03:52,660 --> 00:03:55,310 quarter, 2/4, tatlong-kapat. 66 00:03:55,310 --> 00:03:59,450 Dapat mong agad na malaman na May utang na loob ko sa inyo 40,000 quarters. 67 00:03:59,450 --> 00:04:04,070 >> Ngayon tingnan natin ang isang programa hayaan na humahawak ito ng kaunti mas mahusay. 68 00:04:04,070 --> 00:04:07,190 Sa bersyon na ito ng mga bagay, kailangan pa rin namin upang hilingin sa gumagamit para sa halaga ng 69 00:04:07,190 --> 00:04:10,930 palitan na gusto nila sa eksakto sa parehong paraan ng ginawa namin bago. 70 00:04:10,930 --> 00:04:14,110 Kailangan namin upang isalin ito nang eksakto ang paraan ng ginawa namin bago. 71 00:04:14,110 --> 00:04:17,910 At mayroon pa rin namin ang aming mga barya integer ipinahayag eksaktong katulad ng dati. 72 00:04:17,910 --> 00:04:21,399 >> Kaya narito ang kung saan bagay makakuha ng isang bit naiiba. 73 00:04:21,399 --> 00:04:24,640 Kami ay kasalukuyang barya plus Kapantay cents na hinati sa pamamagitan ng isang-kapat 74 00:04:24,640 --> 00:04:27,140 kung saan quarter ay 25. 75 00:04:27,140 --> 00:04:31,790 Ano ito ay sinasabi ay, tumagal ng maraming quarters bilang maaaring pumunta sa sentimo at magdagdag 76 00:04:31,790 --> 00:04:33,030 na sa barya. 77 00:04:33,030 --> 00:04:40,100 >> Kaya kung cents ay 142, 142 na hinati sa pamamagitan ng 25 ay nagbibigay sa amin 5. 78 00:04:40,100 --> 00:04:43,950 Tandaan na integer division Awtomatikong truncates. 79 00:04:43,950 --> 00:04:46,870 Kaya ginagawa namin barya plus ay katumbas ng 5. 80 00:04:46,870 --> 00:04:51,850 >> Agad-agad matapos na ito, namin sinasabi na cents katumbas cents mod quarter. 81 00:04:51,850 --> 00:04:57,150 Tandaan na ang mod operator ay nagbibigay sa amin ang natitira pagkatapos division. 82 00:04:57,150 --> 00:05:05,840 Kaya 142 mod quarter, na ay magbibigay sa ay 142 minus 125, na kung saan ay 17. 83 00:05:05,840 --> 00:05:10,470 Iyan ang natitira pagkatapos paggawa 142 na hinati sa pamamagitan ng 25. 84 00:05:10,470 --> 00:05:13,040 >> Kaya ngayon cents ay katumbas ng 17. 85 00:05:13,040 --> 00:05:16,080 At gawin namin ang parehong eksaktong bagay para sa dimes. 86 00:05:16,080 --> 00:05:18,620 17 na hinati sa 10 ay magbibigay sa amin 1. 87 00:05:18,620 --> 00:05:20,150 At idagdag namin na i-barya. 88 00:05:20,150 --> 00:05:25,380 At pagkatapos ay i-update namin cents upang maging 17 mod 10, na kung saan ay 7. 89 00:05:25,380 --> 00:05:27,200 >> At pagkatapos ay ang parehong para sa nickels. 90 00:05:27,200 --> 00:05:29,180 7 na hinati sa 5 ay 1. 91 00:05:29,180 --> 00:05:30,880 Magdagdag ng na sa barya. 92 00:05:30,880 --> 00:05:34,600 At pagkatapos ay 7 mod 5 ay 2. 93 00:05:34,600 --> 00:05:35,910 At iyon ang aming cents. 94 00:05:35,910 --> 00:05:39,065 >> At pagkatapos ay, para sa pennies, walang tunay point sa naghahati o Modding, dahil, 95 00:05:39,065 --> 00:05:42,170 kung kami ay $ 0.2 natira, kaya namin agad na idagdag lamang na sa 96 00:05:42,170 --> 00:05:43,590 ang aming mga bilang ng mga barya. 97 00:05:43,590 --> 00:05:48,210 At sa wakas, kailangan naming i-print ang aming bilang ng mga barya at, opsyonal, 98 00:05:48,210 --> 00:05:52,100 bumalik 0 sa dulo ng aming programa upang maging tanda ng lahat ng bagay nagtrabaho. 99 00:05:52,100 --> 00:05:53,120 >> Ang pangalan ko ay Rob. 100 00:05:53,120 --> 00:05:54,020 At ito ay sakim. 101 00:05:54,020 --> 00:05:57,620 >> [MUSIC nagpe-play] 102 00:05:57,620 --> 00:06:01,515