1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [Glazba svira] 3 00:00:11,431 --> 00:00:12,500 >> ROB Bowden: Bok. 4 00:00:12,500 --> 00:00:13,230 Ja sam Rob. 5 00:00:13,230 --> 00:00:15,080 I idemo pohlepni. 6 00:00:15,080 --> 00:00:18,560 >> Dakle, prva stvar koju trebate učiniti se pitati korisnik točno kako 7 00:00:18,560 --> 00:00:20,500 mnogo promjena je dugovao. 8 00:00:20,500 --> 00:00:23,310 Pa evo, vidimo da imamo Do / while petlja. 9 00:00:23,310 --> 00:00:26,650 I mi smo postavljanje dolara jednak GetFloat. 10 00:00:26,650 --> 00:00:27,890 Što je GetFloat? 11 00:00:27,890 --> 00:00:30,700 To je jedna od funkcija u CS50 knjižnica koja dobiva 12 00:00:30,700 --> 00:00:32,450 plutaju od korisnika. 13 00:00:32,450 --> 00:00:35,200 Sjeti se, kako bi mogli koristiti tu funkciju, moramo hash uključuju 14 00:00:35,200 --> 00:00:37,790 CS50.h na vrhu. 15 00:00:37,790 --> 00:00:42,310 >> Dakle, nakon što smo ih vrijednosti od Korisnik, moramo biti sigurni da 16 00:00:42,310 --> 00:00:43,560 to je valjana vrijednost. 17 00:00:43,560 --> 00:00:46,050 Ne možemo duguju negativan novac. 18 00:00:46,050 --> 00:00:48,460 I to je svrha ove zadataka / while petlja. 19 00:00:48,460 --> 00:00:52,420 Nastavljamo petlje dok dolara manje od nule. 20 00:00:52,420 --> 00:00:56,960 I učiniti / while petlja je prava stvar koristiti ovdje, jer moramo pitati 21 00:00:56,960 --> 00:01:00,290 Korisnik barem jednom koliko koliko novca se duguje. 22 00:01:00,290 --> 00:01:05,040 >> Dakle, nakon što smo ih nekoliko dolara, vidimo ovdje imamo int centi 23 00:01:05,040 --> 00:01:08,630 jednako okrugli dolara puta CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 Na vrhu, vidimo da CENTS_PER_DOLLAR je 25 00:01:10,740 --> 00:01:13,750 osjetno definira kao 100. 26 00:01:13,750 --> 00:01:16,270 Pa što je to linija radi? 27 00:01:16,270 --> 00:01:21,200 >> Pa, ako se sjećate, Floating Point Vrijednosti nisu sasvim precizni. 28 00:01:21,200 --> 00:01:25,470 Za razliku od cijelih brojeva, ne može predstavljati pomičnim zarezom vrijednosti točno. 29 00:01:25,470 --> 00:01:28,660 Uvijek postoji neka vrsta nepreciznosti. 30 00:01:28,660 --> 00:01:32,840 Dakle, mi draže raditi sa samo cijelih brojeva u cijelom ovom problemu. 31 00:01:32,840 --> 00:01:42,690 I ovdje, ako je korisnik unio 3,42 dolara, mi smo pretvaranja da je 342 centi i 32 00:01:42,690 --> 00:01:45,900 zaokruživanje, samo se riješiti bilo tog nepreciznosti. 33 00:01:45,900 --> 00:01:49,940 >> Dakle, nakon što smo broj centi u cijeli broj, možemo nastaviti s 34 00:01:49,940 --> 00:01:51,730 Ostatak programa. 35 00:01:51,730 --> 00:01:55,910 Ovdje vidimo da smo progla cijeli broj novci koje smo si samo za korištenje 36 00:01:55,910 --> 00:01:59,560 pratiti od ukupnog broj kovanica. 37 00:01:59,560 --> 00:02:01,590 Evo, mi smo naš prvi while petlja. 38 00:02:01,590 --> 00:02:06,780 >> Vidimo centa dok je veći od ili jednak tromjesečju, što je gore, je mljeveno meso 39 00:02:06,780 --> 00:02:14,680 definiran kao 25., a to je istina, mi želite povećavati naš broj kovanica 40 00:02:14,680 --> 00:02:18,350 i smanjenje centi po kvartalu. 41 00:02:18,350 --> 00:02:22,810 Ne zaboravite da je ovo sintakse je ekvivalent centa 42 00:02:22,810 --> 00:02:26,020 jednako centi minus četvrtinu. 43 00:02:26,020 --> 00:02:28,170 Oni su isti. 44 00:02:28,170 --> 00:02:31,850 >> Pa što je to, a loop radi? 45 00:02:31,850 --> 00:02:39,260 Ideja je da, ako znam 3,42 dolara je dugovao, mogu nastaviti pružati 46 00:02:39,260 --> 00:02:42,670 četvrtine dok ja ne mogu dati četvrtine bilo više. 47 00:02:42,670 --> 00:02:47,720 Ja ne mogu dati četvrtine bilo više, nakon što sam dobio 3,25 dolara. 48 00:02:47,720 --> 00:02:53,300 >> Dakle, nakon što je to slučaj, mi ćemo izaći iz ovog while petlje. 49 00:02:53,300 --> 00:02:57,650 Centi će ostati na 17 centi. 50 00:02:57,650 --> 00:03:01,910 I mi ćemo nastaviti do sljedećeg while petlja gdje smo rekli, dok centi 51 00:03:01,910 --> 00:03:04,270 je veći od ili jednak dime. 52 00:03:04,270 --> 00:03:07,420 >> I sada radimo isto točno stvar koju smo učinili u četvrtfinalu slučaju, 53 00:03:07,420 --> 00:03:09,010 osim dimes. 54 00:03:09,010 --> 00:03:15,050 Tako je s 0,17 dolara, mi ćemo petlju dok možemo više ne daju ni lipe, što je 55 00:03:15,050 --> 00:03:16,680 točno jednom. 56 00:03:16,680 --> 00:03:20,470 I onda ćemo biti s lijeve strane 7 centi. 57 00:03:20,470 --> 00:03:24,730 >> Onda ćemo nastaviti na nickels, koji će loop dok mi ne mogu dati 58 00:03:24,730 --> 00:03:29,420 bilo više Nickels, koji će ostavite nam dva centa. 59 00:03:29,420 --> 00:03:34,400 A onda, na dnu, imamo penija, što će petlje i volje 60 00:03:34,400 --> 00:03:37,140 napokon nas ostavite s nula centi. 61 00:03:37,140 --> 00:03:41,670 Onda na kraju, samo mi treba da isprintati naš broj kovanica. 62 00:03:41,670 --> 00:03:44,980 >> Dakle, ovaj program je savršeno u pravu. 63 00:03:44,980 --> 00:03:47,310 No, mi zapravo može napraviti nešto bolje. 64 00:03:47,310 --> 00:03:52,660 Sada, ako kažem da sam vam dugujem 10.000 $, da ne trebate ići tamo jedan 65 00:03:52,660 --> 00:03:55,310 četvrtine, dva tromjesečja, tri četvrtine. 66 00:03:55,310 --> 00:03:59,450 Ti bi trebao znati da se odmah Dugujem vam 40.000 četvrtine. 67 00:03:59,450 --> 00:04:04,070 >> Sada pogledajmo programu koji to ručke malo bolje. 68 00:04:04,070 --> 00:04:07,190 U ovoj verziji stvari, još uvijek je potrebno pitati korisnika za iznos od 69 00:04:07,190 --> 00:04:10,930 promijeniti da žele u točno isti način smo učinili prije. 70 00:04:10,930 --> 00:04:14,110 Moramo ga zaokružiti točno Način na koji smo i prije. 71 00:04:14,110 --> 00:04:17,910 A mi još uvijek imamo novca cijeli proglasio je točno isto kao i prije. 72 00:04:17,910 --> 00:04:21,399 >> Dakle, ovdje je gdje se stvari dobiti malo drugačiji. 73 00:04:21,399 --> 00:04:24,640 Činimo novca plus dosegne centi podijeljenih po tromjesečjima 74 00:04:24,640 --> 00:04:27,140 gdje je četvrtina je 25. 75 00:04:27,140 --> 00:04:31,790 Što to govori je, uzeti onoliko četvrtine što može ići u centa i dodati 76 00:04:31,790 --> 00:04:33,030 da bi kovanica. 77 00:04:33,030 --> 00:04:40,100 >> Dakle, ako centi je 142, 142 podijeljeno za 25 nam daje pet. 78 00:04:40,100 --> 00:04:43,950 Ne zaboravite da cjelobrojnog dijeljenja automatski truncatus. 79 00:04:43,950 --> 00:04:46,870 Tako radimo novca plus iznosi pet. 80 00:04:46,870 --> 00:04:51,850 >> Odmah nakon toga, mi govoriš cents jednake centi mod tromjesečju. 81 00:04:51,850 --> 00:04:57,150 Ne zaboravite da je mod operator daje nam preostali nakon podjele. 82 00:04:57,150 --> 00:05:05,840 Dakle, 142 mod kvartalu, koja će dati je minus 142 125, koji je 17. 83 00:05:05,840 --> 00:05:10,470 To je ostatak nakon radi 142 podijeljeno 25. 84 00:05:10,470 --> 00:05:13,040 >> Tako sada centi jednak 17. 85 00:05:13,040 --> 00:05:16,080 I mi isto točno stvar za dimes. 86 00:05:16,080 --> 00:05:18,620 17 podijeljeno 10 će nam dati jedan. 87 00:05:18,620 --> 00:05:20,150 A mi dodati da bi kovanica. 88 00:05:20,150 --> 00:05:25,380 A onda ćemo ažurirati centi na se 17 mod 10, što je 7. 89 00:05:25,380 --> 00:05:27,200 >> A onda je isto za nickels. 90 00:05:27,200 --> 00:05:29,180 7 podijeljena 5 je 1. 91 00:05:29,180 --> 00:05:30,880 Dodaj da se kovanica. 92 00:05:30,880 --> 00:05:34,600 I onda 7 mod 5 2. 93 00:05:34,600 --> 00:05:35,910 I to je naša centi. 94 00:05:35,910 --> 00:05:39,065 >> I onda, za novčana jedinica, nema stvarne točka u podjele ili modding, jer, 95 00:05:39,065 --> 00:05:42,170 ako imamo 0,2 dolara preostalo, možemo Samo odmah dodati da se 96 00:05:42,170 --> 00:05:43,590 naš broj kovanica. 97 00:05:43,590 --> 00:05:48,210 I na kraju, moramo se ispisati na našim Broj kovanica i, po potrebi, 98 00:05:48,210 --> 00:05:52,100 return 0 na kraju našeg programa da označi sve što je radio. 99 00:05:52,100 --> 00:05:53,120 >> Moje ime je Rob. 100 00:05:53,120 --> 00:05:54,020 I to je bio pohlepan. 101 00:05:54,020 --> 00:05:57,620 >> [Glazba svira] 102 00:05:57,620 --> 00:06:01,515