1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [GIOCO MUSICA] 3 00:00:11,431 --> 00:00:12,500 >> ROB BOWDEN: Ciao. 4 00:00:12,500 --> 00:00:13,230 Sono Rob. 5 00:00:13,230 --> 00:00:15,080 E veniamo Greedy. 6 00:00:15,080 --> 00:00:18,560 >> Quindi la prima cosa che dobbiamo fare è chiedere esattamente come l'utente 7 00:00:18,560 --> 00:00:20,500 cambia molto è dovuto. 8 00:00:20,500 --> 00:00:23,310 Così qui, vediamo che abbiamo un do / while. 9 00:00:23,310 --> 00:00:26,650 E stiamo impostando dollari pari a GetFloat. 10 00:00:26,650 --> 00:00:27,890 Che cosa è GetFloat? 11 00:00:27,890 --> 00:00:30,700 E 'una delle funzioni del Biblioteca CS50 che ottiene un 12 00:00:30,700 --> 00:00:32,450 galleggiante da parte dell'utente. 13 00:00:32,450 --> 00:00:35,200 Ricorda, al fine di utilizzare tale funzione, abbiamo bisogno di hash includere 14 00:00:35,200 --> 00:00:37,790 CS50.h in alto. 15 00:00:37,790 --> 00:00:42,310 >> Così una volta abbiamo che il valore della utente, abbiamo anche bisogno di essere sicuri che 16 00:00:42,310 --> 00:00:43,560 è un valore valido. 17 00:00:43,560 --> 00:00:46,050 Non possiamo devono soldi negativo. 18 00:00:46,050 --> 00:00:48,460 E così questo è lo scopo di questo do / while. 19 00:00:48,460 --> 00:00:52,420 Continuiamo loop mentre dollari è minore di zero. 20 00:00:52,420 --> 00:00:56,960 E un do / while è la cosa giusta utilizzare qui, poiché abbiamo bisogno di chiedere il 21 00:00:56,960 --> 00:01:00,290 utente almeno una volta per come molto denaro è dovuto. 22 00:01:00,290 --> 00:01:05,040 >> Così una volta abbiamo che il numero di dollari, vediamo qui abbiamo centesimi int 23 00:01:05,040 --> 00:01:08,630 uguale rotonda volte dollars CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 Nella parte superiore, vediamo che CENTS_PER_DOLLAR è 25 00:01:10,740 --> 00:01:13,750 sensibilmente definito come 100. 26 00:01:13,750 --> 00:01:16,270 Così che cosa sta facendo questa linea? 27 00:01:16,270 --> 00:01:21,200 >> Beh, se vi ricordate, in virgola mobile valori non sono abbastanza precisi. 28 00:01:21,200 --> 00:01:25,470 A differenza dei numeri interi, non possiamo rappresentare valori in virgola mobile con precisione. 29 00:01:25,470 --> 00:01:28,660 C'è sempre qualche tipo di imprecisione. 30 00:01:28,660 --> 00:01:32,840 Quindi preferiamo lavorare solo con numeri interi tutto questo problema. 31 00:01:32,840 --> 00:01:42,690 E qui, se l'utente ha immesso 3,42 dollari, stiamo convertendo che a 342 centesimi e 32 00:01:42,690 --> 00:01:45,900 arrotondamenti, solo sbarazzarsi di qualsiasi di tale imprecisione. 33 00:01:45,900 --> 00:01:49,940 >> Quindi, una volta che abbiamo il numero di centesimi un numero intero, si può continuare con l' 34 00:01:49,940 --> 00:01:51,730 resto del programma. 35 00:01:51,730 --> 00:01:55,910 Vediamo qui che stiamo dichiarando intero monete che siamo solo ad utilizzare 36 00:01:55,910 --> 00:01:59,560 per tenere traccia della forza numero di monete. 37 00:01:59,560 --> 00:02:01,590 Qui, abbiamo il nostro primo ciclo while. 38 00:02:01,590 --> 00:02:06,780 >> Vediamo mentre centesimi è superiore o pari a trimestre, che in precedenza, è hash 39 00:02:06,780 --> 00:02:14,680 definito come 25, mentre questo è vero, desidera incrementare il nostro numero di monete 40 00:02:14,680 --> 00:02:18,350 e centesimi decremento per trimestre. 41 00:02:18,350 --> 00:02:22,810 Ricordate che questa sintassi è equivalente a centesimi 42 00:02:22,810 --> 00:02:26,020 uguale centesimi meno trimestre. 43 00:02:26,020 --> 00:02:28,170 Questi sono gli stessi. 44 00:02:28,170 --> 00:02:31,850 >> Così che cosa sta facendo questo ciclo while? 45 00:02:31,850 --> 00:02:39,260 L'idea è che, se so $ 3,42 è dovuto, posso continuare a dare 46 00:02:39,260 --> 00:02:42,670 quarti fino a quando non posso dare quartieri più. 47 00:02:42,670 --> 00:02:47,720 Non posso dare quartieri più, una volta ho dato $ 3,25. 48 00:02:47,720 --> 00:02:53,300 >> Allora, una volta che questo è il caso, faremo uscire da questo ciclo while. 49 00:02:53,300 --> 00:02:57,650 Cents saranno lasciati a 17 centesimi. 50 00:02:57,650 --> 00:03:01,910 E continueremo fino alla prossima while in cui diciamo, mentre centesimi 51 00:03:01,910 --> 00:03:04,270 è maggiore o uguale al centesimo. 52 00:03:04,270 --> 00:03:07,420 >> E ora stiamo facendo lo stesso cosa che abbiamo fatto nel caso trimestre, 53 00:03:07,420 --> 00:03:09,010 tranne che con Dimes. 54 00:03:09,010 --> 00:03:15,050 Quindi, con 0,17 dollari, faremo ciclo finché possiamo non dare una monetina, che è 55 00:03:15,050 --> 00:03:16,680 esattamente una volta. 56 00:03:16,680 --> 00:03:20,470 E poi saremo lasciati con 7 centesimi. 57 00:03:20,470 --> 00:03:24,730 >> Poi continueremo a monetine, che Vi ciclo finché non possiamo dare 58 00:03:24,730 --> 00:03:29,420 eventuali altre monetine, che sarà ci lascia con due centesimi. 59 00:03:29,420 --> 00:03:34,400 E poi, giù in fondo, abbiamo centesimi, che in loop e volontà 60 00:03:34,400 --> 00:03:37,140 infine ci lascia con zero centesimi. 61 00:03:37,140 --> 00:03:41,670 Poi, alla fine, abbiamo solo bisogno di stampare la nostra numero di monete. 62 00:03:41,670 --> 00:03:44,980 >> Quindi questo programma è perfettamente corretto. 63 00:03:44,980 --> 00:03:47,310 Ma possiamo davvero fare un po 'meglio. 64 00:03:47,310 --> 00:03:52,660 Ora, se io dico che ti devo $ 10.000, non dovrebbe essere necessario andare qui è uno 65 00:03:52,660 --> 00:03:55,310 quarto, due quarti, tre quarti. 66 00:03:55,310 --> 00:03:59,450 Si deve sapere subito che Ti devo 40.000 trimestri. 67 00:03:59,450 --> 00:04:04,070 >> Ora diamo un'occhiata a un programma che gestisce un po 'meglio. 68 00:04:04,070 --> 00:04:07,190 In questa versione delle cose, abbiamo ancora bisogno per chiedere all'utente per la quantità di 69 00:04:07,190 --> 00:04:10,930 cambiamento che vogliono esattamente Allo stesso modo abbiamo fatto prima. 70 00:04:10,930 --> 00:04:14,110 Abbiamo bisogno di arrotondare esattamente il modo in cui abbiamo fatto prima. 71 00:04:14,110 --> 00:04:17,910 E abbiamo ancora le nostre monete intero dichiarato esattamente come prima. 72 00:04:17,910 --> 00:04:21,399 >> Quindi, ecco dove le cose ottenere un po 'diverso. 73 00:04:21,399 --> 00:04:24,640 Stiamo facendo le monete più uguali centesimi divisi per quartiere 74 00:04:24,640 --> 00:04:27,140 dove trimestre è di 25. 75 00:04:27,140 --> 00:04:31,790 Ciò sta dicendo è, prendere come molti quarti come possono andare in centesimi e aggiungere 76 00:04:31,790 --> 00:04:33,030 che, per le monete. 77 00:04:33,030 --> 00:04:40,100 >> Quindi, se centesimi è 142, 142 diviso 25 ci dà 5. 78 00:04:40,100 --> 00:04:43,950 Ricorda che divisione intera tronca automaticamente. 79 00:04:43,950 --> 00:04:46,870 Quindi stiamo facendo le monete più uguale a 5. 80 00:04:46,870 --> 00:04:51,850 >> Subito dopo questo, stiamo dicendo centesimi centesimi pari trimestre mod. 81 00:04:51,850 --> 00:04:57,150 Ricordate che l'operatore mod dà noi il resto dopo la divisione. 82 00:04:57,150 --> 00:05:05,840 Quindi 142 trimestre mod, che darà è 142 meno 125, che è 17. 83 00:05:05,840 --> 00:05:10,470 Questo è il resto dopo facendo 142 diviso per 25. 84 00:05:10,470 --> 00:05:13,040 >> Così ora centesimi è pari a 17. 85 00:05:13,040 --> 00:05:16,080 E noi facciamo lo stesso cosa per Dimes. 86 00:05:16,080 --> 00:05:18,620 17 diviso 10 ci darà 1. 87 00:05:18,620 --> 00:05:20,150 E aggiungiamo che alle monete. 88 00:05:20,150 --> 00:05:25,380 E allora aggiorniamo centesimi a essere 17 mod 10, che è 7. 89 00:05:25,380 --> 00:05:27,200 >> E poi lo stesso per monetine. 90 00:05:27,200 --> 00:05:29,180 7 diviso 5 è 1. 91 00:05:29,180 --> 00:05:30,880 Aggiungi che per le monete. 92 00:05:30,880 --> 00:05:34,600 E poi 7 mod 5 è 2. 93 00:05:34,600 --> 00:05:35,910 E questo è il nostro centesimi. 94 00:05:35,910 --> 00:05:39,065 >> E poi, per pochi spiccioli, non c'è alcuna reale punto di divisione o di modding, in quanto, 95 00:05:39,065 --> 00:05:42,170 se abbiamo 0,2 dollari a sinistra sopra, possiamo basta aggiungere subito che per 96 00:05:42,170 --> 00:05:43,590 il numero di monete. 97 00:05:43,590 --> 00:05:48,210 E, infine, abbiamo bisogno di stampare la nostra numero di monete e, opzionalmente, 98 00:05:48,210 --> 00:05:52,100 ritorno 0 alla fine del nostro programma per significare tutto ha funzionato. 99 00:05:52,100 --> 00:05:53,120 >> Il mio nome è Rob. 100 00:05:53,120 --> 00:05:54,020 E questo era avido. 101 00:05:54,020 --> 00:05:57,620 >> [GIOCO MUSICA] 102 00:05:57,620 --> 00:06:01,515