1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [MUSIC PLAYBACK] 3 00:00:11,431 --> 00:00:12,500 >> ROB BOWDEN: Ahoj. 4 00:00:12,500 --> 00:00:13,230 Som Rob. 5 00:00:13,230 --> 00:00:15,080 A poďme Greedy. 6 00:00:15,080 --> 00:00:18,560 >> Takže prvá vec, ktorú musíme urobiť, sa opýtať, ako užívateľa 7 00:00:18,560 --> 00:00:20,500 veľa zmena dlhuje. 8 00:00:20,500 --> 00:00:23,310 Takže tu vidíme, máme do / while. 9 00:00:23,310 --> 00:00:26,650 A my sme nastavenie dolárov rovná GetFloat. 10 00:00:26,650 --> 00:00:27,890 Čo je GetFloat? 11 00:00:27,890 --> 00:00:30,700 Je to jedna z funkcií CS50 knižnica, ktorá dostane 12 00:00:30,700 --> 00:00:32,450 float od užívateľa. 13 00:00:32,450 --> 00:00:35,200 Pamätajte si, že s cieľom využiť túto funkciu, musíme hash obsahovať 14 00:00:35,200 --> 00:00:37,790 CS50.h hore. 15 00:00:37,790 --> 00:00:42,310 >> Takže akonáhle budeme mať túto hodnotu od užívateľ, musíme tiež byť istí, že 16 00:00:42,310 --> 00:00:43,560 je platná hodnota. 17 00:00:43,560 --> 00:00:46,050 Nemôžeme dlhuje negatívny peňazí. 18 00:00:46,050 --> 00:00:48,460 A tak to je účel tejto úlohy / while. 19 00:00:48,460 --> 00:00:52,420 Pokračujeme opakovanie pri dolárov je menšia ako nula. 20 00:00:52,420 --> 00:00:56,960 A do / while je správna vec používať tu, pretože musíme pýtať 21 00:00:56,960 --> 00:01:00,290 užívateľ aspoň raz, ako koľko peňazí dlhuje. 22 00:01:00,290 --> 00:01:05,040 >> Takže akonáhle sme sa, že počet dolárov, vidíme tu máme int centov 23 00:01:05,040 --> 00:01:08,630 rovná kolo dolárov krát CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 V hornej časti vidíme, že CENTS_PER_DOLLAR je 25 00:01:10,740 --> 00:01:13,750 rozumne definovaná ako 100. 26 00:01:13,750 --> 00:01:16,270 Takže to, čo sa tento riadok robí? 27 00:01:16,270 --> 00:01:21,200 >> No, ak si pamätám, s plávajúcou desatinnou čiarkou hodnoty nie sú úplne presné. 28 00:01:21,200 --> 00:01:25,470 Na rozdiel od čísel, nemôžeme predstavovať s plávajúcou desatinnou čiarkou hodnoty presne. 29 00:01:25,470 --> 00:01:28,660 Vždy je tu nejaký nepresnosť. 30 00:01:28,660 --> 00:01:32,840 Tak sme radšej pracovať len s celými číslami v tomto probléme. 31 00:01:32,840 --> 00:01:42,690 A tu, v prípade, že používateľ zadal 3,42 dolárov, sme konverzie, ktoré sa na 342 centov a 32 00:01:42,690 --> 00:01:45,900 zaokrúhľovania, len zbaviť každý z tejto nepresnosti. 33 00:01:45,900 --> 00:01:49,940 >> Takže akonáhle budeme mať počet centov na celé číslo, môžeme pokračovať 34 00:01:49,940 --> 00:01:51,730 Zvyšok programu. 35 00:01:51,730 --> 00:01:55,910 Vidíme tu, že budeme deklarovať číslo mince, ktoré sme sa používať iba 36 00:01:55,910 --> 00:01:59,560 sledovať z celkového počtu počet mincí. 37 00:01:59,560 --> 00:02:01,590 Tu máme prvé while. 38 00:02:01,590 --> 00:02:06,780 >> Vidíme, zatiaľ čo centov je väčší alebo rovná štvrťroku, ktoré vyššie, je hash 39 00:02:06,780 --> 00:02:14,680 definovaná ako 25, a zároveň, že je to pravda, sme Chcete zvýšiť svoju počtu mincí 40 00:02:14,680 --> 00:02:18,350 a Dekrementační centov podľa štvrťrokov. 41 00:02:18,350 --> 00:02:22,810 Nezabudnite, že táto syntaxe zodpovedá centov 42 00:02:22,810 --> 00:02:26,020 rovná centov mínus štvrťroku. 43 00:02:26,020 --> 00:02:28,170 To sú rovnaké. 44 00:02:28,170 --> 00:02:31,850 >> Takže čo je to, keď slučka robí? 45 00:02:31,850 --> 00:02:39,260 Myšlienka je, že pokiaľ viem, 3,42 dolárov dlhuje, môžem aj naďalej dávať 46 00:02:39,260 --> 00:02:42,670 štvrtiny, kým som si nedal štvrtiny viac. 47 00:02:42,670 --> 00:02:47,720 Nemôžem dať QUARTERS nič viac, Raz som s ohľadom 3,25 dolárov. 48 00:02:47,720 --> 00:02:53,300 >> Takže, akonáhle je to tento prípad, budeme vymaniť sa z tohto cyklu while. 49 00:02:53,300 --> 00:02:57,650 Centov bude ponechané na 17 centov. 50 00:02:57,650 --> 00:03:01,910 A budeme pokračovať až do nasledujúcej while, kde hovoríme, zatiaľ čo centov 51 00:03:01,910 --> 00:03:04,270 je väčší alebo rovné desetník. 52 00:03:04,270 --> 00:03:07,420 >> A teraz robíme to isté presné vec, ktorú sme urobili v tomto štvrťroku prípade, 53 00:03:07,420 --> 00:03:09,010 s výnimkou desaťhalierniky. 54 00:03:09,010 --> 00:03:15,050 Takže s 0,17 dolármi, budeme slučka, kým môžeme už dať desetník, ktorý je 55 00:03:15,050 --> 00:03:16,680 práve raz. 56 00:03:16,680 --> 00:03:20,470 A potom budeme zostáva 7 centov. 57 00:03:20,470 --> 00:03:24,730 >> Potom budeme pokračovať na Nickels, ktoré sa slučka, kým nemôže dať 58 00:03:24,730 --> 00:03:29,420 žiadne ďalšie Nickels, ktorý bude nechajte nás s dva centy. 59 00:03:29,420 --> 00:03:34,400 A potom, sa v spodnej časti, máme haliere, ktorý bude slučka a bude 60 00:03:34,400 --> 00:03:37,140 Nakoniec nechajte nás s nulovými centov. 61 00:03:37,140 --> 00:03:41,670 Potom na konci, len je treba, aby vytlačte si náš počet mincí. 62 00:03:41,670 --> 00:03:44,980 >> Takže tento program je úplne správne. 63 00:03:44,980 --> 00:03:47,310 Ale môžeme skutočne urobiť trochu lepšie. 64 00:03:47,310 --> 00:03:52,660 Teraz, keď poviem, že dlhujem ti $ 10,000, by ste nemali potrebovať ísť tu je jeden 65 00:03:52,660 --> 00:03:55,310 štvrťroku, dvoch štvrťrokoch, tri štvrtiny. 66 00:03:55,310 --> 00:03:59,450 Mali by ste okamžite vedieť, že Dlhujem ti 40.000 štvrtiny. 67 00:03:59,450 --> 00:04:04,070 >> Teraz sa poďme pozrieť na program, ktorý zvláda to trochu lepšie. 68 00:04:04,070 --> 00:04:07,190 V tejto verzii vecí, stále potrebujeme požiadať užívateľa o množstve 69 00:04:07,190 --> 00:04:10,930 zmeniť, že chcú v presne Rovnakým spôsobom sme robili predtým. 70 00:04:10,930 --> 00:04:14,110 Musíme to zohnať presne ako sme robili predtým. 71 00:04:14,110 --> 00:04:17,910 A máme ešte naše mince číslo vyhlásil, presne rovnaký ako predtým. 72 00:04:17,910 --> 00:04:21,399 >> Tak tu je miesto, kde sa veci dostať trochu inak. 73 00:04:21,399 --> 00:04:24,640 Robíme mince a navyše rovná centov rozdelené podľa štvrťrokov 74 00:04:24,640 --> 00:04:27,140 kde štvrtina je 25. 75 00:04:27,140 --> 00:04:31,790 Čo to hovorí je, brať čo najviac štvrtiny ako môže ísť do centov a pridať 76 00:04:31,790 --> 00:04:33,030 že na minciach. 77 00:04:33,030 --> 00:04:40,100 >> Takže ak je 142 centov, 142 delená o 25 nám dáva 5. 78 00:04:40,100 --> 00:04:43,950 Nezabudnite, že celočíselné delenie automaticky skráti. 79 00:04:43,950 --> 00:04:46,870 Takže robíme mincí a je rovná 5. 80 00:04:46,870 --> 00:04:51,850 >> Ihneď potom, čo hovoríme centov rovných centov mod štvrťroku. 81 00:04:51,850 --> 00:04:57,150 Nezabudnite, že mod operátor dáva nám zvyšok po delení. 82 00:04:57,150 --> 00:05:05,840 Takže 142 mod štvrťroku, ktoré vám dá je 142 mínus 125, čo je 17. 83 00:05:05,840 --> 00:05:10,470 Je to zvyšok po robí 142 delené 25. 84 00:05:10,470 --> 00:05:13,040 >> Takže teraz centov sa rovná 17. 85 00:05:13,040 --> 00:05:16,080 A robíme to isté presné vec pre desaťhalierniky. 86 00:05:16,080 --> 00:05:18,620 17 delené 10 nám dá 1. 87 00:05:18,620 --> 00:05:20,150 A keď k tomu pridám mincí. 88 00:05:20,150 --> 00:05:25,380 A potom sme sa aktualizovať centov sa 17 mod 10, čo je 7. 89 00:05:25,380 --> 00:05:27,200 >> A potom rovnaké pre Nickels. 90 00:05:27,200 --> 00:05:29,180 7 delené 5 je 1.. 91 00:05:29,180 --> 00:05:30,880 Dodávam, že do mincí. 92 00:05:30,880 --> 00:05:34,600 A potom 7 mod 5 je 2. 93 00:05:34,600 --> 00:05:35,910 A to je naša centov. 94 00:05:35,910 --> 00:05:39,065 >> A potom, pre haliere, nie je tam žiadny skutočný bod delenie alebo modding, pretože, 95 00:05:39,065 --> 00:05:42,170 ak máme 0,2 dolárov zostane, môžeme Len ihneď dodať, že do 96 00:05:42,170 --> 00:05:43,590 náš počet mincí. 97 00:05:43,590 --> 00:05:48,210 A konečne, musíme vytlačiť naše počet mincí a, voliteľne, 98 00:05:48,210 --> 00:05:52,100 return 0 na konci nášho programu znamenať všetko fungovalo. 99 00:05:52,100 --> 00:05:53,120 >> Volám sa Rob. 100 00:05:53,120 --> 00:05:54,020 A to bol chamtivý. 101 00:05:54,020 --> 00:05:57,620 >> [MUSIC PLAYBACK] 102 00:05:57,620 --> 00:06:01,515