1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [MUZIKO Ludanta] 3 00:00:11,431 --> 00:00:12,500 >> ROB Bowden: Hi. 4 00:00:12,500 --> 00:00:13,230 Mi Rob. 5 00:00:13,230 --> 00:00:15,080 Kaj ni akiras Greedy. 6 00:00:15,080 --> 00:00:18,560 >> Do la unua afero, kiun ni devas fari estas demandi la uzanto ekzakte kiom 7 00:00:18,560 --> 00:00:20,500 multe ŝanĝo ŝuldas. 8 00:00:20,500 --> 00:00:23,310 Do jen, ni vidas ni havas oni do / dum buklo. 9 00:00:23,310 --> 00:00:26,650 Kaj ni opcio dolarojn egala al GetFloat. 10 00:00:26,650 --> 00:00:27,890 Kio estas GetFloat? 11 00:00:27,890 --> 00:00:30,700 Ĝi estas unu el la funkcioj en la CS50 biblioteko kiu ricevas 12 00:00:30,700 --> 00:00:32,450 flosi de la uzanto. 13 00:00:32,450 --> 00:00:35,200 Memoru, en ordo uzi tiun funkcion, ni bezonas hash inkluzivi 14 00:00:35,200 --> 00:00:37,790 CS50.h ĉe la supro. 15 00:00:37,790 --> 00:00:42,310 >> Do iam ni havas tiun valoron de la uzanton, ni ankaŭ bezonos esti certa ke 16 00:00:42,310 --> 00:00:43,560 ĝi estas valida valoro. 17 00:00:43,560 --> 00:00:46,050 Ni ne povas ŝuldas negativa mono. 18 00:00:46,050 --> 00:00:48,460 Kaj tial ke estas la celo de tiu do / dum buklo. 19 00:00:48,460 --> 00:00:52,420 Ni daŭre looping dum dolarojn estas malpli ol nulo. 20 00:00:52,420 --> 00:00:56,960 Kaj do / dum buklo estas la ĝusta afero uzi ĉi tie, ĉar ni devas demandi la 21 00:00:56,960 --> 00:01:00,290 uzanton almenaŭ unufoje dum kiom multan monon estas ŝuldas. 22 00:01:00,290 --> 00:01:05,040 >> Do iam ni havos, ke nombro da dolaroj, ni vidas ĉi tie ni havas int cendojn 23 00:01:05,040 --> 00:01:08,630 egalas ronda dolaroj fojoj CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 Ĉe la supro, ni vidas, ke CENTS_PER_DOLLAR estas 25 00:01:10,740 --> 00:01:13,750 sencoplene difinita kiel 100. 26 00:01:13,750 --> 00:01:16,270 Do kio estas tiu linio faras? 27 00:01:16,270 --> 00:01:21,200 >> Nu, se vi memoras, glitpunkta valoroj ne estas sufiĉe preciza. 28 00:01:21,200 --> 00:01:25,470 Kontraste entjeroj, ni ne povas reprezenti glitpunktaj valoroj ekzakte. 29 00:01:25,470 --> 00:01:28,660 Ĉiam ian de imprecision. 30 00:01:28,660 --> 00:01:32,840 Do ni preferas labori per nur entjeroj laŭlonge de ĉi tiu problemo. 31 00:01:32,840 --> 00:01:42,690 Kaj tie, se la uzanto eniris $ 3,42, ni konvertanta ke al 342 cendoj kaj 32 00:01:42,690 --> 00:01:45,900 rondigas, nur liveris de neniu el kiuj imprecision. 33 00:01:45,900 --> 00:01:49,940 >> Do iam ni havas la nombro da cendoj en entjera, ni povas daŭrigi kun la 34 00:01:49,940 --> 00:01:51,730 resto de la programo. 35 00:01:51,730 --> 00:01:55,910 Oni vidas ĉi tie ke ni deklarante entjero moneroj kiuj ni estas nur uzi 36 00:01:55,910 --> 00:01:59,560 konservi spuron de la tuta nombro de moneroj. 37 00:01:59,560 --> 00:02:01,590 Tie, ni havas niajn unuajn dum buklo. 38 00:02:01,590 --> 00:02:06,780 >> Ni vidas dum cendoj estas pli granda ol aŭ egala al kvarono, kiuj supre, estas hash 39 00:02:06,780 --> 00:02:14,680 difinita kiel 25, kvankam tio estas vera, ni ĉu pliigo nia nombro de moneroj 40 00:02:14,680 --> 00:02:18,350 kaj dekremento cendoj en kazerno. 41 00:02:18,350 --> 00:02:22,810 Memoru, ke ĉi tiu sintakso estas ekvivalento al cendoj 42 00:02:22,810 --> 00:02:26,020 egalas cendoj minus trimestro. 43 00:02:26,020 --> 00:02:28,170 Tiuj estas la sama. 44 00:02:28,170 --> 00:02:31,850 >> Do kio estas ĉi tio dum buklo faras? 45 00:02:31,850 --> 00:02:39,260 La ideo estas, ke, se mi konas $ 3,42 Estas ŝuldis, mi povas daŭrigi donante 46 00:02:39,260 --> 00:02:42,670 kazernoj ĝis mi ne povas doni kazernoj plu. 47 00:02:42,670 --> 00:02:47,720 Mi ne povas doni kvaraj plu, iam mi donis $ 3.25. 48 00:02:47,720 --> 00:02:53,300 >> Do tiam, iam tio estas la kazo, ni Frakasu de ĉi dum buklo. 49 00:02:53,300 --> 00:02:57,650 Cendoj estos lasita je 17 cendoj. 50 00:02:57,650 --> 00:03:01,910 Kaj ni vidos daŭrigi malsupren al la sekva dum buklo kie ni diru, dum cendojn 51 00:03:01,910 --> 00:03:04,270 estas pli granda ol aŭ egala al centonon. 52 00:03:04,270 --> 00:03:07,420 >> Kaj nun ni faras la saman ĝusta afero, kiun ni faris en la kvara kazo, 53 00:03:07,420 --> 00:03:09,010 krom kun argentajn monerojn. 54 00:03:09,010 --> 00:03:15,050 Do kun $ 0.17, ni buklo ĝis ni povas ne plu donos groŝon, kiu estas 55 00:03:15,050 --> 00:03:16,680 precize unufoje. 56 00:03:16,680 --> 00:03:20,470 Kaj tiam ni devos resti kun 7 cendojn. 57 00:03:20,470 --> 00:03:24,730 >> Tiam ni daŭrigas sur Nickels, kiuj estos buklo ĝis ni ne povas doni 58 00:03:24,730 --> 00:03:29,420 plu Nickels, kiuj volas forlasi nin per du cendojn. 59 00:03:29,420 --> 00:03:34,400 Kaj poste, sube ĉe la malsupro, ni havi monerojn, kiuj volas buklo kaj volo 60 00:03:34,400 --> 00:03:37,140 fine forlasi nin per nulo cendoj. 61 00:03:37,140 --> 00:03:41,670 Tiam ĉe la fino, ni devas nur presi nian numeron de moneroj. 62 00:03:41,670 --> 00:03:44,980 >> Do tiu programo estas perfekte ĝustaj. 63 00:03:44,980 --> 00:03:47,310 Sed ni povas efektive fari iom pli bone. 64 00:03:47,310 --> 00:03:52,660 Nun, se mi diras ke mi ŝuldas al vi $ 10,000, Vi devus ne bezonas iri tien estas unu 65 00:03:52,660 --> 00:03:55,310 kvara, du kvaraj, tri kvaronoj. 66 00:03:55,310 --> 00:03:59,450 Vi devus scii ke tuj Mi ŝuldas al vi 40.000 kazernoj. 67 00:03:59,450 --> 00:04:04,070 >> Nun ni rigardu programo kiu manipulas iom pli bone. 68 00:04:04,070 --> 00:04:07,190 En ĉi tiu versio de la aferoj, ni ankoraŭ bezonas demandi la uzanto pro la kvanto de 69 00:04:07,190 --> 00:04:10,930 ŝanĝi tion ili volas havi en ĝuste la sama maniero ni faris antaŭe. 70 00:04:10,930 --> 00:04:14,110 Ni bezonos por rondigi ĝin precize la vojo ni faris antaŭe. 71 00:04:14,110 --> 00:04:17,910 Kaj ni ankoraŭ havas niajn monerojn entjero deklaris ekzakte la sama kiel antaŭe. 72 00:04:17,910 --> 00:04:21,399 >> Do tie estas kie aferoj preni iom malsama. 73 00:04:21,399 --> 00:04:24,640 Ni faras monerojn plus egaluloj cendoj dividita per kvarono 74 00:04:24,640 --> 00:04:27,140 kie kvarono estas 25. 75 00:04:27,140 --> 00:04:31,790 Kion tio estas diranta estas, preni kiel multaj kvaraj kiel povas iri en cendoj kaj aldoni 76 00:04:31,790 --> 00:04:33,030 ke al moneroj. 77 00:04:33,030 --> 00:04:40,100 >> Do se cendoj estas 142, 142 dividita 25 donas al ni 5. 78 00:04:40,100 --> 00:04:43,950 Memoru ke entjera divido aŭtomate senpintigas. 79 00:04:43,950 --> 00:04:46,870 Do ni faras monerojn plus egalas 5. 80 00:04:46,870 --> 00:04:51,850 >> Tuj post tio, ni jene cendoj egalas cendoj mod trimestro. 81 00:04:51,850 --> 00:04:57,150 Memoru ke la mod operatoro donas ni la resto post divido. 82 00:04:57,150 --> 00:05:05,840 Do 142 mod kvara, kiu donos Estas 142 minus 125, kiu estas 17. 83 00:05:05,840 --> 00:05:10,470 Tio estas la resto post faranta 142 dividita per 25. 84 00:05:10,470 --> 00:05:13,040 >> Do nun cendoj egalas al 17. 85 00:05:13,040 --> 00:05:16,080 Kaj ni faru la samajn ĝusta afero por argentajn monerojn. 86 00:05:16,080 --> 00:05:18,620 17 dividita per 10 donos al ni 1. 87 00:05:18,620 --> 00:05:20,150 Kaj ni aldonu, ke por moneroj. 88 00:05:20,150 --> 00:05:25,380 Kaj tiam ni ĝisdatigi cendojn por estos 17 mod 10, kiu estas 7. 89 00:05:25,380 --> 00:05:27,200 >> Kaj tiam la sama por Nickels. 90 00:05:27,200 --> 00:05:29,180 7 dividitaj per 5 estas 1. 91 00:05:29,180 --> 00:05:30,880 Aldoni, ke por moneroj. 92 00:05:30,880 --> 00:05:34,600 Kaj tiam 7 mod 5 estas 2. 93 00:05:34,600 --> 00:05:35,910 Kaj tio estas nia cendoj. 94 00:05:35,910 --> 00:05:39,065 >> Kaj tiam, por monerojn, ne estas reala punkto en dividanta aŭ modding, ekde, 95 00:05:39,065 --> 00:05:42,170 se ni havas $ 0,2 lasis super, ni povas ĝuste tuj aldoni, ke por 96 00:05:42,170 --> 00:05:43,590 nia nombro de moneroj. 97 00:05:43,590 --> 00:05:48,210 Kaj fine, ni bezonas por presi nian nombro de moneroj kaj, laŭvole, 98 00:05:48,210 --> 00:05:52,100 revenu 0 je la fino de nia programo por signifi ĉio funkciis. 99 00:05:52,100 --> 00:05:53,120 >> Mia nomo estas Rob. 100 00:05:53,120 --> 00:05:54,020 Kaj tio estis Greedy. 101 00:05:54,020 --> 00:05:57,620 >> [MUZIKO Ludanta] 102 00:05:57,620 --> 00:06:01,515