1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [MUSIC PŘEHRÁVÁNÍ] 3 00:00:11,431 --> 00:00:12,500 >> ROB BOWDEN: Ahoj. 4 00:00:12,500 --> 00:00:13,230 Jsem Rob. 5 00:00:13,230 --> 00:00:15,080 A pojďme Greedy. 6 00:00:15,080 --> 00:00:18,560 >> Takže první věc, kterou musíme udělat, se zeptat, jak uživatele 7 00:00:18,560 --> 00:00:20,500 hodně změna dluží. 8 00:00:20,500 --> 00:00:23,310 Takže tady vidíme, máme do / while. 9 00:00:23,310 --> 00:00:26,650 A my jsme nastavení dolarů rovná GetFloat. 10 00:00:26,650 --> 00:00:27,890 Co je GetFloat? 11 00:00:27,890 --> 00:00:30,700 Je to jedna z funkcí CS50 knihovna, která dostane 12 00:00:30,700 --> 00:00:32,450 float od uživatele. 13 00:00:32,450 --> 00:00:35,200 Pamatujte si, že s cílem využít tuto funkci, musíme hash obsahovat 14 00:00:35,200 --> 00:00:37,790 CS50.h nahoře. 15 00:00:37,790 --> 00:00:42,310 >> Takže jakmile budeme mít tuto hodnotu od uživatel, musíme také být jisti, že 16 00:00:42,310 --> 00:00:43,560 je platná hodnota. 17 00:00:43,560 --> 00:00:46,050 Nemůžeme dluží negativní peněz. 18 00:00:46,050 --> 00:00:48,460 A tak to je účel tohoto úkolu / while. 19 00:00:48,460 --> 00:00:52,420 Pokračujeme opakování při dolarů je menší než nula. 20 00:00:52,420 --> 00:00:56,960 A do / while je správná věc používat zde, protože musíme ptát 21 00:00:56,960 --> 00:01:00,290 uživatel alespoň jednou, jak kolik peněz dluží. 22 00:01:00,290 --> 00:01:05,040 >> Takže jakmile jsme se, že počet dolarů, vidíme zde máme int centů 23 00:01:05,040 --> 00:01:08,630 rovná kolo dolarů krát CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 V horní části vidíme, že CENTS_PER_DOLLAR je 25 00:01:10,740 --> 00:01:13,750 rozumně definována jako 100. 26 00:01:13,750 --> 00:01:16,270 Takže to, co se tento řádek dělá? 27 00:01:16,270 --> 00:01:21,200 >> No, pokud si pamatuji, s plovoucí desetinnou čárkou hodnoty nejsou zcela přesné. 28 00:01:21,200 --> 00:01:25,470 Na rozdíl od čísel, nemůžeme představovat s plovoucí desetinnou čárkou hodnoty přesně. 29 00:01:25,470 --> 00:01:28,660 Vždycky je tu nějaký nepřesnost. 30 00:01:28,660 --> 00:01:32,840 Tak jsme raději pracovat jen s celými čísly v tomto problému. 31 00:01:32,840 --> 00:01:42,690 A tady, v případě, že uživatel zadal 3,42 dolarů, jsme konverze, které se na 342 centů a 32 00:01:42,690 --> 00:01:45,900 zaokrouhlování, jen zbavit každý z této nepřesnosti. 33 00:01:45,900 --> 00:01:49,940 >> Takže jakmile budeme mít počet centů na celé číslo, můžeme pokračovat 34 00:01:49,940 --> 00:01:51,730 Zbytek programu. 35 00:01:51,730 --> 00:01:55,910 Vidíme zde, že budeme deklarovat číslo mince, které jsme se používat pouze 36 00:01:55,910 --> 00:01:59,560 sledovat z celkového počtu počet mincí. 37 00:01:59,560 --> 00:02:01,590 Zde máme první while. 38 00:02:01,590 --> 00:02:06,780 >> Vidíme, zatímco centů je větší než nebo rovná čtvrtletí, které výše, je hash 39 00:02:06,780 --> 00:02:14,680 definována jako 25, a zároveň, že je to pravda, jsme Chcete zvýšit svou počtu mincí 40 00:02:14,680 --> 00:02:18,350 a dekrementační centů podle čtvrtletí. 41 00:02:18,350 --> 00:02:22,810 Nezapomeňte, že tato syntaxe odpovídá centů 42 00:02:22,810 --> 00:02:26,020 rovná centů minus čtvrtletí. 43 00:02:26,020 --> 00:02:28,170 To jsou stejné. 44 00:02:28,170 --> 00:02:31,850 >> Takže co je to, když smyčka dělá? 45 00:02:31,850 --> 00:02:39,260 Myšlenka je, že pokud vím, 3,42 dolarů dluží, mohu i nadále dávat 46 00:02:39,260 --> 00:02:42,670 čtvrtiny, dokud jsem si nedal čtvrtiny víc. 47 00:02:42,670 --> 00:02:47,720 Nemůžu dát QUARTERS nic víc, Jednou jsem s ohledem 3,25 dolarů. 48 00:02:47,720 --> 00:02:53,300 >> Takže, jakmile je to tento případ, budeme vymanit se z tohoto cyklu while. 49 00:02:53,300 --> 00:02:57,650 Centů bude ponecháno na 17 centů. 50 00:02:57,650 --> 00:03:01,910 A budeme pokračovat až do příští while, kde říkáme, zatímco centů 51 00:03:01,910 --> 00:03:04,270 je větší než nebo rovno desetník. 52 00:03:04,270 --> 00:03:07,420 >> A teď děláme totéž přesné věc, kterou jsme udělali v tomto čtvrtletí případě, 53 00:03:07,420 --> 00:03:09,010 s výjimkou desetníky. 54 00:03:09,010 --> 00:03:15,050 Takže s 0,17 dolary, budeme smyčka, dokud můžeme již dát desetník, který je 55 00:03:15,050 --> 00:03:16,680 právě jednou. 56 00:03:16,680 --> 00:03:20,470 A pak budeme zbývá 7 centů. 57 00:03:20,470 --> 00:03:24,730 >> Pak budeme pokračovat na nickels, které se smyčka, dokud nemůže dát 58 00:03:24,730 --> 00:03:29,420 žádné další nickels, který bude nechte nás s dva centy. 59 00:03:29,420 --> 00:03:34,400 A pak, se ve spodní části, máme haléře, který bude smyčka a bude 60 00:03:34,400 --> 00:03:37,140 Nakonec nechte nás s nulovými centů. 61 00:03:37,140 --> 00:03:41,670 Pak na konci, jen je třeba, aby vytiskněte si náš počet mincí. 62 00:03:41,670 --> 00:03:44,980 >> Takže tento program je naprosto správné. 63 00:03:44,980 --> 00:03:47,310 Ale můžeme skutečně udělat trochu lépe. 64 00:03:47,310 --> 00:03:52,660 Nyní, když řeknu, že dlužím ti $ 10,000, byste neměli potřebovat jít tady je jeden 65 00:03:52,660 --> 00:03:55,310 čtvrtletí, dvou čtvrtletích, tři čtvrtiny. 66 00:03:55,310 --> 00:03:59,450 Měli byste okamžitě vědět, že Dlužím ti 40.000 čtvrtiny. 67 00:03:59,450 --> 00:04:04,070 >> Nyní se pojďme podívat na program, který zvládá to trochu lepší. 68 00:04:04,070 --> 00:04:07,190 V této verzi věcí, stále potřebujeme požádat uživatele o množství 69 00:04:07,190 --> 00:04:10,930 změnit, že chtějí v přesně Stejným způsobem jsme dělali předtím. 70 00:04:10,930 --> 00:04:14,110 Musíme to sehnat přesně jak jsme dělali předtím. 71 00:04:14,110 --> 00:04:17,910 A máme ještě naše mince číslo prohlásil, přesně stejný jako předtím. 72 00:04:17,910 --> 00:04:21,399 >> Tak tady je místo, kde se věci dostat trochu jinak. 73 00:04:21,399 --> 00:04:24,640 Děláme mince a navíc rovná centů rozdělené podle čtvrtletí 74 00:04:24,640 --> 00:04:27,140 kde čtvrtina je 25. 75 00:04:27,140 --> 00:04:31,790 Co to říká je, brát co nejvíce čtvrtiny jak může jít do centů a přidat 76 00:04:31,790 --> 00:04:33,030 že na mincích. 77 00:04:33,030 --> 00:04:40,100 >> Takže pokud je 142 centů, 142 dělená o 25 nám dává 5. 78 00:04:40,100 --> 00:04:43,950 Nezapomeňte, že celočíselné dělení automaticky zkrátí. 79 00:04:43,950 --> 00:04:46,870 Takže děláme mincí a je rovna 5. 80 00:04:46,870 --> 00:04:51,850 >> Ihned poté, co říkáme centů rovných centů mod čtvrtletí. 81 00:04:51,850 --> 00:04:57,150 Nezapomeňte, že mod operátor dává nám zbytek po dělení. 82 00:04:57,150 --> 00:05:05,840 Takže 142 mod čtvrtletí, které vám dá je 142 minus 125, což je 17. 83 00:05:05,840 --> 00:05:10,470 Je to zbytek po dělá 142 děleno 25. 84 00:05:10,470 --> 00:05:13,040 >> Takže nyní centů se rovná 17. 85 00:05:13,040 --> 00:05:16,080 A děláme totéž přesné věc pro desetníky. 86 00:05:16,080 --> 00:05:18,620 17 děleno 10 nám dá 1. 87 00:05:18,620 --> 00:05:20,150 A když k tomu přidám mincí. 88 00:05:20,150 --> 00:05:25,380 A pak jsme se aktualizovat centů se 17 mod 10, což je 7. 89 00:05:25,380 --> 00:05:27,200 >> A pak stejné pro nickels. 90 00:05:27,200 --> 00:05:29,180 7 děleno 5 je 1.. 91 00:05:29,180 --> 00:05:30,880 Dodávám, že do mincí. 92 00:05:30,880 --> 00:05:34,600 A pak 7 mod 5 je 2. 93 00:05:34,600 --> 00:05:35,910 A to je naše centů. 94 00:05:35,910 --> 00:05:39,065 >> A pak, pro haléře, není tam žádný skutečný bod dělení nebo modding, protože, 95 00:05:39,065 --> 00:05:42,170 pokud máme 0,2 dolarů zbude, můžeme Jen ihned dodat, ž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čně, musíme vytisknout naše počet mincí a, volitelně, 98 00:05:48,210 --> 00:05:52,100 return 0 na konci našeho programu znamenat všechno fungovalo. 99 00:05:52,100 --> 00:05:53,120 >> Jmenuji se Rob. 100 00:05:53,120 --> 00:05:54,020 A to byl chamtivý. 101 00:05:54,020 --> 00:05:57,620 >> [MUSIC PŘEHRÁVÁNÍ] 102 00:05:57,620 --> 00:06:01,515