1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [Redare a muzicii] 3 00:00:11,431 --> 00:00:12,500 >> ROB BOWDEN: Hi. 4 00:00:12,500 --> 00:00:13,230 Sunt Rob. 5 00:00:13,230 --> 00:00:15,080 Și hai să Greedy. 6 00:00:15,080 --> 00:00:18,560 >> Deci, primul lucru pe care trebuie să facem se întreba exact modul în care utilizatorul 7 00:00:18,560 --> 00:00:20,500 o mare schimbare se datorează. 8 00:00:20,500 --> 00:00:23,310 Deci, aici, vedem avem un do / while. 9 00:00:23,310 --> 00:00:26,650 Și suntem stabilirea de dolari egal la GetFloat. 10 00:00:26,650 --> 00:00:27,890 Ce este GetFloat? 11 00:00:27,890 --> 00:00:30,700 Este una din funcțiile în Bibliotecă CS50 care devine o 12 00:00:30,700 --> 00:00:32,450 pluti la utilizator. 13 00:00:32,450 --> 00:00:35,200 Amintiți-vă, în scopul de a utiliza această funcție, avem nevoie pentru a hash includă 14 00:00:35,200 --> 00:00:37,790 CS50.h în partea de sus. 15 00:00:37,790 --> 00:00:42,310 >> Deci, odată ce avem ca valoare din de utilizator, avem nevoie, de asemenea, pentru a fi siguri că 16 00:00:42,310 --> 00:00:43,560 este o valoare validă. 17 00:00:43,560 --> 00:00:46,050 Nu putem să datorez bani negativ. 18 00:00:46,050 --> 00:00:48,460 Si asa ca asta e scopul din acest do / în timp ce bucla. 19 00:00:48,460 --> 00:00:52,420 Vom continua looping în timp ce de dolari este mai mică decât zero. 20 00:00:52,420 --> 00:00:56,960 Și un / în timp ce buclă este un lucru bun do de a folosi aici, din moment ce avem nevoie pentru a cere 21 00:00:56,960 --> 00:01:00,290 user cel puțin o dată pentru modul în care bani se datorează. 22 00:01:00,290 --> 00:01:05,040 >> Deci, odată ce avem acest număr de dolari, vom vedea aici avem de centi int 23 00:01:05,040 --> 00:01:08,630 este egal cu runda de dolari ori CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 In partea de sus, vedem că CENTS_PER_DOLLAR este 25 00:01:10,740 --> 00:01:13,750 sensibil definit ca 100. 26 00:01:13,750 --> 00:01:16,270 Deci, ce este această linie face? 27 00:01:16,270 --> 00:01:21,200 >> Ei bine, dacă vă aduceți aminte, virgulă mobilă Valorile nu sunt destul de precise. 28 00:01:21,200 --> 00:01:25,470 Spre deosebire de numere întregi, nu putem reprezenta valori în virgulă mobilă exact. 29 00:01:25,470 --> 00:01:28,660 Există întotdeauna un fel de imprecizie. 30 00:01:28,660 --> 00:01:32,840 Așa că am prefera să lucreze cu doar numere întregi în toată această problemă. 31 00:01:32,840 --> 00:01:42,690 Și aici, în cazul în care utilizatorul a introdus 3.42 dolari, suntem de conversie care la 342 de cenți și 32 00:01:42,690 --> 00:01:45,900 rotunjire, doar scăpa de orice din care imprecizie. 33 00:01:45,900 --> 00:01:49,940 >> Deci, odată ce avem numărul de cenți în un întreg, putem continua cu 34 00:01:49,940 --> 00:01:51,730 restul programului. 35 00:01:51,730 --> 00:01:55,910 Vedem aici că suntem declararea întreg monede care suntem doar de a utiliza 36 00:01:55,910 --> 00:01:59,560 pentru a urmări din total număr de monede. 37 00:01:59,560 --> 00:02:01,590 Aici, avem prima noastră buclă în timp. 38 00:02:01,590 --> 00:02:06,780 >> Ne vedem în timp ce de cenți este mai mare sau egal la trimestru, care de mai sus, este hash 39 00:02:06,780 --> 00:02:14,680 definită ca 25, în timp ce este adevărat, noi Vreau să incrementa numărul nostru de monede 40 00:02:14,680 --> 00:02:18,350 și cenți decrementare pe trimestru. 41 00:02:18,350 --> 00:02:22,810 Amintiți-vă că această sintaxă este echivalent cu cenți 42 00:02:22,810 --> 00:02:26,020 este egal cenți minus trimestru. 43 00:02:26,020 --> 00:02:28,170 Acestea sunt la fel. 44 00:02:28,170 --> 00:02:31,850 >> Deci, ce este această buclă în timp ce faci? 45 00:02:31,850 --> 00:02:39,260 Ideea aici este că, dacă știu 3.42 dolari se datorează, pot continua acordarea 46 00:02:39,260 --> 00:02:42,670 trimestre până când nu pot da sferturi orice mai mult. 47 00:02:42,670 --> 00:02:47,720 Eu nu pot da sferturi orice mai mult, o dată am dat 3.25 dolari. 48 00:02:47,720 --> 00:02:53,300 >> Deci, odată ce acesta este cazul, vom izbucni din această buclă în timp. 49 00:02:53,300 --> 00:02:57,650 Cenți va fi lăsat la 17 de cenți. 50 00:02:57,650 --> 00:03:01,910 Și vom continua în jos la altul în timp ce buclă în care se spune, în timp ce de cenți 51 00:03:01,910 --> 00:03:04,270 este mai mare sau egal cu ban. 52 00:03:04,270 --> 00:03:07,420 >> Și acum facem același exactă lucru am făcut în cazul trimestru, 53 00:03:07,420 --> 00:03:09,010 cu excepția Dimes. 54 00:03:09,010 --> 00:03:15,050 Deci, cu 0.17 dolari, vom bucla până când putem nu mai da nici un ban, care este 55 00:03:15,050 --> 00:03:16,680 exact o dată. 56 00:03:16,680 --> 00:03:20,470 Și apoi vom fi lasat cu 7 cenți. 57 00:03:20,470 --> 00:03:24,730 >> Apoi vom continua pe monezi, care va bucla până când nu putem da 58 00:03:24,730 --> 00:03:29,420 orice mai multe monezi, care va lasă-ne cu doi cenți. 59 00:03:29,420 --> 00:03:34,400 Și apoi, în jos în partea de jos, avem mărunțiș, care va buclă și va 60 00:03:34,400 --> 00:03:37,140 în cele din urmă ne lasă cu de zero centi. 61 00:03:37,140 --> 00:03:41,670 Apoi, la sfârșitul anului, avem nevoie doar pentru a imprima numărul nostru de monede. 62 00:03:41,670 --> 00:03:44,980 >> Deci, acest program este perfect corect. 63 00:03:44,980 --> 00:03:47,310 Dar putem face de fapt, un pic mai bine. 64 00:03:47,310 --> 00:03:52,660 Acum, dacă spun că-ți datorez 10.000 de dolari, tu nu ar trebui să meargă aici e una 65 00:03:52,660 --> 00:03:55,310 trimestru, două trimestre, trei sferturi. 66 00:03:55,310 --> 00:03:59,450 Ar trebui să știi imediat că Îți datorez 40.000 de sferturi. 67 00:03:59,450 --> 00:04:04,070 >> Acum, să ne uităm la un program care se ocupă de ea un pic mai bine. 68 00:04:04,070 --> 00:04:07,190 În această versiune de lucruri, avem încă nevoie de pentru a cere utilizatorului pentru suma de 69 00:04:07,190 --> 00:04:10,930 schimba pe care le doresc, în exact la fel am făcut înainte. 70 00:04:10,930 --> 00:04:14,110 Trebuie să-l rotunjească exact modul în care am făcut-o înainte. 71 00:04:14,110 --> 00:04:17,910 Și încă mai avem de monede noastre întreg declarat exact la fel ca înainte. 72 00:04:17,910 --> 00:04:21,399 >> Deci, aici e în cazul în care lucrurile obține un pic diferit. 73 00:04:21,399 --> 00:04:24,640 Facem monede, plus egali cenți împărțite la sfert 74 00:04:24,640 --> 00:04:27,140 unde trimestru este de 25. 75 00:04:27,140 --> 00:04:31,790 Ceea ce acest lucru este să spun este, să ia cât mai multe sferturi ca poate merge în cenți și adăuga 76 00:04:31,790 --> 00:04:33,030 care la monede. 77 00:04:33,030 --> 00:04:40,100 >> Deci, dacă cenți este 142, 142 împărțit de 25 ne dă 5. 78 00:04:40,100 --> 00:04:43,950 Amintiți-vă că diviziunea întreg trunchiază automat. 79 00:04:43,950 --> 00:04:46,870 Deci, ce facem monede plus este egal cu 5. 80 00:04:46,870 --> 00:04:51,850 >> Imediat după aceasta, ne spune centi centi egale trimestru mod. 81 00:04:51,850 --> 00:04:57,150 Amintiți-vă că operatorul mod dă ne restul după divizare. 82 00:04:57,150 --> 00:05:05,840 Deci, 142 trimestru mod, care va da este 142 minus 125, care este de 17. 83 00:05:05,840 --> 00:05:10,470 Asta e restul după face 142 împărțit la 25. 84 00:05:10,470 --> 00:05:13,040 >> Deci, acum cenți este egal cu 17. 85 00:05:13,040 --> 00:05:16,080 Și noi facem același exactă lucru pentru Dimes. 86 00:05:16,080 --> 00:05:18,620 17 împărțit la 10 ne va da 1. 87 00:05:18,620 --> 00:05:20,150 Și vom adăuga că, pentru monede. 88 00:05:20,150 --> 00:05:25,380 Și apoi ne-am actualizat de centi la fi 17 mod 10, care este 7. 89 00:05:25,380 --> 00:05:27,200 >> Și apoi la fel de monezi. 90 00:05:27,200 --> 00:05:29,180 7 împărțit la 5 este 1. 91 00:05:29,180 --> 00:05:30,880 Adaugă că, pentru monede. 92 00:05:30,880 --> 00:05:34,600 Și apoi 7 mod 5 este 2. 93 00:05:34,600 --> 00:05:35,910 Și asta e de centi noastre. 94 00:05:35,910 --> 00:05:39,065 >> Și apoi, pentru mărunțiș, nu există nici o reală punct în divizare sau modding, deoarece, 95 00:05:39,065 --> 00:05:42,170 dacă avem 0.2 dolari la stânga peste, putem trebuie doar să adăugați imediat că la 96 00:05:42,170 --> 00:05:43,590 numărul nostru de monede. 97 00:05:43,590 --> 00:05:48,210 Și, în sfârșit, avem nevoie pentru a imprima nostru numărul de monede și, opțional, 98 00:05:48,210 --> 00:05:52,100 întoarce 0 la sfârșitul programului nostru pentru a semnifica totul a mers. 99 00:05:52,100 --> 00:05:53,120 >> Numele meu este Rob. 100 00:05:53,120 --> 00:05:54,020 Și acest lucru a fost lacom. 101 00:05:54,020 --> 00:05:57,620 >> [Redare a muzicii] 102 00:05:57,620 --> 00:06:01,515