1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [REPRODUCCIÓ DE MÚSICA] 3 00:00:11,431 --> 00:00:12,500 >> ROB Bowden: Hi. 4 00:00:12,500 --> 00:00:13,230 Sóc Rob. 5 00:00:13,230 --> 00:00:15,080 I arribarem cobdiciós. 6 00:00:15,080 --> 00:00:18,560 >> Així que el primer que hem de fer es demanarà a l'usuari exactament com 7 00:00:18,560 --> 00:00:20,500 es va deure en gran part del canvi. 8 00:00:20,500 --> 00:00:23,310 Així que aquí, veiem que tenim un document / while. 9 00:00:23,310 --> 00:00:26,650 I estem establint dòlars igual a GetFloat. 10 00:00:26,650 --> 00:00:27,890 Què és GetFloat? 11 00:00:27,890 --> 00:00:30,700 És una de les funcions en el Biblioteca CS50 que rep una 12 00:00:30,700 --> 00:00:32,450 surar des de l'usuari. 13 00:00:32,450 --> 00:00:35,200 Recordeu, per tal d'utilitzar aquesta funció, que necessitem per discutir inclouen 14 00:00:35,200 --> 00:00:37,790 CS50.h a la part superior. 15 00:00:37,790 --> 00:00:42,310 >> Així que una vegada que tinguem el valor de la usuari, també hem d'estar segurs que 16 00:00:42,310 --> 00:00:43,560 que és un valor vàlid. 17 00:00:43,560 --> 00:00:46,050 No podem deure diners negatiu. 18 00:00:46,050 --> 00:00:48,460 I així, aquest és el propòsit d'aquest do / while. 19 00:00:48,460 --> 00:00:52,420 Seguim bucle mentre dòlars és menor que zero. 20 00:00:52,420 --> 00:00:56,960 I un fitxer / while és el correcte per fer utilitzar aquí, ja que hem de demanar a la 21 00:00:56,960 --> 00:01:00,290 usuari almenys una vegada durant quant Quants diners se li deu. 22 00:01:00,290 --> 00:01:05,040 >> Així que una vegada que tinguem aquesta quantitat de dòlars, Veurem aquí tenim int centaus 23 00:01:05,040 --> 00:01:08,630 equival volta dòlars temps CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 A la part superior, veiem que CENTS_PER_DOLLAR és 25 00:01:10,740 --> 00:01:13,750 sensiblement definit com 100. 26 00:01:13,750 --> 00:01:16,270 Llavors, què està fent aquesta línia? 27 00:01:16,270 --> 00:01:21,200 >> Bé, si vostè recorda, en coma flotant Els valors no són molt precisos. 28 00:01:21,200 --> 00:01:25,470 A diferència dels nombres enters, no podem representar valors de punt flotant amb exactitud. 29 00:01:25,470 --> 00:01:28,660 Sempre hi ha algun tipus d'imprecisió. 30 00:01:28,660 --> 00:01:32,840 Així que preferim treballar amb només nombres enters al llarg d'aquest problema. 31 00:01:32,840 --> 00:01:42,690 I aquí, si l'usuari introdueix $ 3,42, estem convertint aquesta a 342 centaus de dòlar i 32 00:01:42,690 --> 00:01:45,900 arrodoniment, simplement desfer-se de qualsevol que la imprecisió. 33 00:01:45,900 --> 00:01:49,940 >> Així que una vegada que tinguem el nombre de centaus en un nombre enter, es pot continuar amb el 34 00:01:49,940 --> 00:01:51,730 resta del programa. 35 00:01:51,730 --> 00:01:55,910 Veiem aquí que estem declarant sencer monedes que estem a només usar 36 00:01:55,910 --> 00:01:59,560 per portar un registre del total nombre de monedes. 37 00:01:59,560 --> 00:02:01,590 Aquí, tenim el nostre primer bucle while. 38 00:02:01,590 --> 00:02:06,780 >> Veiem mentre centaus és major o igual al trimestre, que anteriorment, és de hash 39 00:02:06,780 --> 00:02:14,680 definit com el 25, mentre que això és cert, vol incrementar el nostre nombre de monedes 40 00:02:14,680 --> 00:02:18,350 i centaus decrement per trimestre. 41 00:02:18,350 --> 00:02:22,810 Recordi que aquesta sintaxi és equivalent a centaus 42 00:02:22,810 --> 00:02:26,020 iguals centaus menys quart. 43 00:02:26,020 --> 00:02:28,170 Aquests són el mateix. 44 00:02:28,170 --> 00:02:31,850 >> Llavors, què està fent aquest bucle while? 45 00:02:31,850 --> 00:02:39,260 La idea és que, si conec $ 3,42 que es deu, que puc seguir donant 46 00:02:39,260 --> 00:02:42,670 trimestres fins que no pugui donar trimestres més. 47 00:02:42,670 --> 00:02:47,720 No puc donar trimestres més, una vegada que m'he donat 3,25 $. 48 00:02:47,720 --> 00:02:53,300 >> Així doncs, una vegada que aquest és el cas, anem a trencar aquest bucle while. 49 00:02:53,300 --> 00:02:57,650 Cents es deixaran en 17 centaus de dòlar. 50 00:02:57,650 --> 00:03:01,910 I continuarem fins a la propera while on diem, mentre centaus 51 00:03:01,910 --> 00:03:04,270 és més gran que o igual a la moneda de deu centaus. 52 00:03:04,270 --> 00:03:07,420 >> I ara que estem fent exactament el mateix cosa que vam fer al trimestre cas, 53 00:03:07,420 --> 00:03:09,010 excepte amb monedes de deu centaus. 54 00:03:09,010 --> 00:03:15,050 Així que amb 0,17 $, anem a bucle fins que puguem ia no donar ni un cèntim, que és 55 00:03:15,050 --> 00:03:16,680 exactament una vegada. 56 00:03:16,680 --> 00:03:20,470 I després ens quedarem amb 7 centaus. 57 00:03:20,470 --> 00:03:24,730 >> Després continuarem a monedes de cinc centaus, que es repetirà fins que no puguem donar 58 00:03:24,730 --> 00:03:29,420 les més de cinc centaus, que ens deixa amb dos centaus. 59 00:03:29,420 --> 00:03:34,400 I a continuació, cap avall a la part inferior, tenim monedes d'un cèntim, que es repetirà i es 60 00:03:34,400 --> 00:03:37,140 finalment ens deixa amb zero centaus. 61 00:03:37,140 --> 00:03:41,670 Després, al final, només hem de imprimir el nostre nombre de monedes. 62 00:03:41,670 --> 00:03:44,980 >> Així que aquest programa és perfectament correcte. 63 00:03:44,980 --> 00:03:47,310 Però en realitat podem fer una mica millor. 64 00:03:47,310 --> 00:03:52,660 Ara bé, si jo dic que li dec 10.000 $ que no cal anar aquí és una 65 00:03:52,660 --> 00:03:55,310 trimestre, dos trimestres, les tres quartes parts. 66 00:03:55,310 --> 00:03:59,450 Vostè ha de saber immediatament que Et dec 40 mil quarts. 67 00:03:59,450 --> 00:04:04,070 >> Ara donem una ullada a un programa que maneja una mica millor. 68 00:04:04,070 --> 00:04:07,190 En aquesta versió de les coses, encara necessitem per preguntar a l'usuari per la quantitat de 69 00:04:07,190 --> 00:04:10,930 un canvi que ells volen exactament de la mateixa manera que vam fer abans. 70 00:04:10,930 --> 00:04:14,110 Necessitem reunir exactament la forma en què ho va fer abans. 71 00:04:14,110 --> 00:04:17,910 I encara tenim les nostres monedes sencer declarat exactament el mateix que abans. 72 00:04:17,910 --> 00:04:21,399 >> Així que aquí és on les coses ser una mica diferent. 73 00:04:21,399 --> 00:04:24,640 Estem fent les monedes més iguals centaus dividits per trimestre 74 00:04:24,640 --> 00:04:27,140 on trimestre és de 25. 75 00:04:27,140 --> 00:04:31,790 El que això diu és, prendre la major quantitat trimestres com poden entrar en centaus i afegiu 76 00:04:31,790 --> 00:04:33,030 que a les monedes. 77 00:04:33,030 --> 00:04:40,100 >> Així que si centaus són 142, 142 dividit per 25 ens dóna 5. 78 00:04:40,100 --> 00:04:43,950 Recordeu que la divisió entera trunca automàticament. 79 00:04:43,950 --> 00:04:46,870 Així que estem fent les monedes més és igual a 5. 80 00:04:46,870 --> 00:04:51,850 >> Immediatament després d'això, estem dient centaus centaus iguals trimestre mod. 81 00:04:51,850 --> 00:04:57,150 Recordeu que l'operador mod dóna nosaltres el que queda després de la divisió. 82 00:04:57,150 --> 00:05:05,840 Així trimestre 142 mod, que donarà és a dir 142 menys 125, que és 17. 83 00:05:05,840 --> 00:05:10,470 Això és el que queda després d' fent 142 dividit per 25. 84 00:05:10,470 --> 00:05:13,040 >> Així que ara centaus és igual a 17. 85 00:05:13,040 --> 00:05:16,080 I fem el mateix exacta cosa de deu centaus. 86 00:05:16,080 --> 00:05:18,620 17 dividit per 10 ens donarà 1. 87 00:05:18,620 --> 00:05:20,150 I afegim que a les monedes. 88 00:05:20,150 --> 00:05:25,380 I després actualitzem centaus a ser 17 mod 10, que és 7. 89 00:05:25,380 --> 00:05:27,200 >> I a continuació, el mateix per monedes de cinc centaus. 90 00:05:27,200 --> 00:05:29,180 7 dividit per 5 és 1. 91 00:05:29,180 --> 00:05:30,880 Afegeix que per a les monedes. 92 00:05:30,880 --> 00:05:34,600 I després 7 mod 5 és 2. 93 00:05:34,600 --> 00:05:35,910 I aquesta és la nostra centaus. 94 00:05:35,910 --> 00:05:39,065 >> I després, per uns centaus, no hi ha veritable punt de divisió o modding, ja que, 95 00:05:39,065 --> 00:05:42,170 si tenim $ 0.2 sobra, podem només ha d'afegir immediatament que 96 00:05:42,170 --> 00:05:43,590 nostre número de monedes. 97 00:05:43,590 --> 00:05:48,210 I finalment, hem de imprimir el nostre nombre de monedes i, opcionalment, 98 00:05:48,210 --> 00:05:52,100 retorna 0 al final del nostre programa per significar tot el que s'ha treballat. 99 00:05:52,100 --> 00:05:53,120 >> El meu nom és Rob. 100 00:05:53,120 --> 00:05:54,020 I això era cobdiciós. 101 00:05:54,020 --> 00:05:57,620 >> [REPRODUCCIÓ DE MÚSICA] 102 00:05:57,620 --> 00:06:01,515