1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [REPRODUCCIÓN DE MÚSICA] 3 00:00:11,431 --> 00:00:12,500 >> ROB BOWDEN: Hi. 4 00:00:12,500 --> 00:00:13,230 Soy Rob. 5 00:00:13,230 --> 00:00:15,080 Y vamos a llegar codicioso. 6 00:00:15,080 --> 00:00:18,560 >> Así que lo primero que tenemos que hacer se pedirá al usuario exactamente cómo 7 00:00:18,560 --> 00:00:20,500 se debió en gran parte del cambio. 8 00:00:20,500 --> 00:00:23,310 Así que aquí, vemos que tenemos un do / while. 9 00:00:23,310 --> 00:00:26,650 Y estamos estableciendo dólares igual a GetFloat. 10 00:00:26,650 --> 00:00:27,890 ¿Qué es GetFloat? 11 00:00:27,890 --> 00:00:30,700 Es una de las funciones en el Biblioteca CS50 que recibe una 12 00:00:30,700 --> 00:00:32,450 flotar desde el usuario. 13 00:00:32,450 --> 00:00:35,200 Recuerde, con el fin de utilizar esta función, que necesitamos para discutir incluyen 14 00:00:35,200 --> 00:00:37,790 CS50.h en la parte superior. 15 00:00:37,790 --> 00:00:42,310 >> Así que una vez que tengamos el valor de la usuario, también tenemos que estar seguros de que 16 00:00:42,310 --> 00:00:43,560 que es un valor válido. 17 00:00:43,560 --> 00:00:46,050 No podemos deber dinero negativo. 18 00:00:46,050 --> 00:00:48,460 Y así, ese es el propósito de este do / while. 19 00:00:48,460 --> 00:00:52,420 Seguimos bucle mientras dólares es menor que cero. 20 00:00:52,420 --> 00:00:56,960 Y una / while es lo correcto por hacer utilizar aquí, ya que tenemos que pedir a la 21 00:00:56,960 --> 00:01:00,290 usuario al menos una vez durante cuánto Cuánto dinero se le adeuda. 22 00:01:00,290 --> 00:01:05,040 >> Así que una vez que tengamos esa cantidad de dólares, Veremos aquí tenemos int centavos 23 00:01:05,040 --> 00:01:08,630 equivale vuelta dólares tiempos CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 En la parte superior, vemos que CENTS_PER_DOLLAR es 25 00:01:10,740 --> 00:01:13,750 sensiblemente definido como 100. 26 00:01:13,750 --> 00:01:16,270 Entonces, ¿qué está haciendo esta línea? 27 00:01:16,270 --> 00:01:21,200 >> Bueno, si usted recuerda, en coma flotante Los valores no son muy precisos. 28 00:01:21,200 --> 00:01:25,470 A diferencia de los números enteros, no podemos representar valores de punto flotante con exactitud. 29 00:01:25,470 --> 00:01:28,660 Siempre hay algún tipo de imprecisión. 30 00:01:28,660 --> 00:01:32,840 Así que preferimos trabajar con sólo números enteros a lo largo de este problema. 31 00:01:32,840 --> 00:01:42,690 Y aquí, si el usuario introduce 3,42 dólares, estamos convirtiendo esa a 342 centavos de dólar y 32 00:01:42,690 --> 00:01:45,900 redondeo, simplemente deshacerse de cualquiera de que la imprecisión. 33 00:01:45,900 --> 00:01:49,940 >> Así que una vez que tengamos el número de centavos en un número entero, se puede continuar con el 34 00:01:49,940 --> 00:01:51,730 resto del programa. 35 00:01:51,730 --> 00:01:55,910 Vemos aquí que estamos declarando entero monedas que estamos a sólo usar 36 00:01:55,910 --> 00:01:59,560 para llevar un registro del total número de monedas. 37 00:01:59,560 --> 00:02:01,590 Aquí, tenemos nuestro primer bucle while. 38 00:02:01,590 --> 00:02:06,780 >> Vemos mientras centavos es mayor o igual al trimestre, que anteriormente, es de hash 39 00:02:06,780 --> 00:02:14,680 definido como el 25, mientras que eso es cierto, desea incrementar nuestro número de monedas 40 00:02:14,680 --> 00:02:18,350 y centavos decremento por trimestre. 41 00:02:18,350 --> 00:02:22,810 Recuerde que esta sintaxis es equivalente a centavos 42 00:02:22,810 --> 00:02:26,020 iguales centavos menos cuarto. 43 00:02:26,020 --> 00:02:28,170 Esos son el mismo. 44 00:02:28,170 --> 00:02:31,850 >> Entonces, ¿qué está haciendo este bucle while? 45 00:02:31,850 --> 00:02:39,260 La idea aquí es que, si conozco a $ 3.42 que se debe, que puedo seguir dando 46 00:02:39,260 --> 00:02:42,670 trimestres hasta que no pueda dar trimestres más. 47 00:02:42,670 --> 00:02:47,720 No puedo dar trimestres más, una vez que me he dado 3,25 dólares. 48 00:02:47,720 --> 00:02:53,300 >> Así pues, una vez que ese es el caso, vamos a romper este bucle while. 49 00:02:53,300 --> 00:02:57,650 Cents se dejarán en 17 centavos de dólar. 50 00:02:57,650 --> 00:03:01,910 Y vamos a seguir hasta la próxima while donde decimos, mientras centavos 51 00:03:01,910 --> 00:03:04,270 es mayor que o igual a la moneda de diez centavos. 52 00:03:04,270 --> 00:03:07,420 >> Y ahora que estamos haciendo exactamente el mismo cosa que hicimos en el trimestre caso, 53 00:03:07,420 --> 00:03:09,010 excepto con monedas de diez centavos. 54 00:03:09,010 --> 00:03:15,050 Así que con $ 0.17, vamos a bucle hasta que podamos ya no dar ni un centavo, que es 55 00:03:15,050 --> 00:03:16,680 exactamente una vez. 56 00:03:16,680 --> 00:03:20,470 Y luego nos vamos a quedar con 7 centavos. 57 00:03:20,470 --> 00:03:24,730 >> Luego continuaremos a monedas de cinco centavos, que se repetirá hasta que no podamos dar 58 00:03:24,730 --> 00:03:29,420 las más de cinco centavos, que se nos deja con dos centavos. 59 00:03:29,420 --> 00:03:34,400 Y a continuación, hacia abajo en la parte inferior, tenemos monedas de un centavo, que se repetirá y se 60 00:03:34,400 --> 00:03:37,140 finalmente nos deja con cero centavos. 61 00:03:37,140 --> 00:03:41,670 Luego, al final, sólo tenemos que imprimir nuestro número de monedas. 62 00:03:41,670 --> 00:03:44,980 >> Así que este programa es perfectamente correcto. 63 00:03:44,980 --> 00:03:47,310 Pero en realidad podemos hacer un poco mejor. 64 00:03:47,310 --> 00:03:52,660 Ahora bien, si yo digo que le debo $ 10,000 que no es necesario ir aquí es una 65 00:03:52,660 --> 00:03:55,310 trimestre, dos trimestres, las tres cuartas partes. 66 00:03:55,310 --> 00:03:59,450 Usted debe saber inmediatamente que Te debo 40 mil cuartos. 67 00:03:59,450 --> 00:04:04,070 >> Ahora echemos un vistazo a un programa que maneja un poco mejor. 68 00:04:04,070 --> 00:04:07,190 En esta versión de las cosas, aún necesitamos para preguntar al usuario por la cantidad de 69 00:04:07,190 --> 00:04:10,930 un cambio que ellos quieren exactamente de la misma manera que hicimos antes. 70 00:04:10,930 --> 00:04:14,110 Necesitamos reunir exactamente la forma en que lo hizo antes. 71 00:04:14,110 --> 00:04:17,910 Y todavía tenemos nuestras monedas entero declarado exactamente el mismo que antes. 72 00:04:17,910 --> 00:04:21,399 >> Así que aquí es donde las cosas ser un poco diferente. 73 00:04:21,399 --> 00:04:24,640 Estamos haciendo las monedas más iguales centavos divididos por trimestre 74 00:04:24,640 --> 00:04:27,140 donde trimestre es de 25. 75 00:04:27,140 --> 00:04:31,790 Lo que esto dice es, tomar la mayor cantidad trimestres como pueden entrar en centavos y agregue 76 00:04:31,790 --> 00:04:33,030 que a las monedas. 77 00:04:33,030 --> 00:04:40,100 >> Así que si centavos son 142, 142 dividido por 25 nos da 5. 78 00:04:40,100 --> 00:04:43,950 Recuerde que la división entera trunca automáticamente. 79 00:04:43,950 --> 00:04:46,870 Así que estamos haciendo las monedas más es igual a 5. 80 00:04:46,870 --> 00:04:51,850 >> Inmediatamente después de esto, estamos diciendo centavos centavos iguales trimestre mod. 81 00:04:51,850 --> 00:04:57,150 Recuerde que el operador mod da nosotros lo que queda después de la división. 82 00:04:57,150 --> 00:05:05,840 Así trimestre 142 mod, que dará es decir 142 menos 125, que es 17. 83 00:05:05,840 --> 00:05:10,470 Eso es lo que queda después de haciendo 142 dividido por 25. 84 00:05:10,470 --> 00:05:13,040 >> Así que ahora centavos es igual a 17. 85 00:05:13,040 --> 00:05:16,080 Y hacemos lo mismo exacta cosa de diez centavos. 86 00:05:16,080 --> 00:05:18,620 17 dividido por 10 nos dará 1. 87 00:05:18,620 --> 00:05:20,150 Y añadimos que a las monedas. 88 00:05:20,150 --> 00:05:25,380 Y luego actualizamos centavos a ser 17 mod 10, que es 7. 89 00:05:25,380 --> 00:05:27,200 >> Y a continuación, el mismo para monedas de cinco centavos. 90 00:05:27,200 --> 00:05:29,180 7 dividido por 5 es 1. 91 00:05:29,180 --> 00:05:30,880 Añade que para las monedas. 92 00:05:30,880 --> 00:05:34,600 Y luego 7 mod 5 es 2. 93 00:05:34,600 --> 00:05:35,910 Y esa es nuestra centavos. 94 00:05:35,910 --> 00:05:39,065 >> Y luego, por unos centavos, no hay verdadera punto de división o modding, ya que, 95 00:05:39,065 --> 00:05:42,170 si tenemos $ 0.2 sobra, podemos sólo tiene que añadir inmediatamente que a 96 00:05:42,170 --> 00:05:43,590 nuestro número de monedas. 97 00:05:43,590 --> 00:05:48,210 Y por último, tenemos que imprimir nuestro número de monedas y, opcionalmente, 98 00:05:48,210 --> 00:05:52,100 devuelve 0 al final de nuestro programa para significar todo lo trabajado. 99 00:05:52,100 --> 00:05:53,120 >> Mi nombre es Rob. 100 00:05:53,120 --> 00:05:54,020 Y esto era codicioso. 101 00:05:54,020 --> 00:05:57,620 >> [REPRODUCCIÓN DE MÚSICA] 102 00:05:57,620 --> 00:06:01,515