[GIOCO MUSICA] ROB BOWDEN: Ciao. Sono Rob. E veniamo Greedy. Quindi la prima cosa che dobbiamo fare è chiedere esattamente come l'utente cambia molto è dovuto. Così qui, vediamo che abbiamo un do / while. E stiamo impostando dollari pari a GetFloat. Che cosa è GetFloat? E 'una delle funzioni del Biblioteca CS50 che ottiene un galleggiante da parte dell'utente. Ricorda, al fine di utilizzare tale funzione, abbiamo bisogno di hash includere CS50.h in alto. Così una volta abbiamo che il valore della utente, abbiamo anche bisogno di essere sicuri che è un valore valido. Non possiamo devono soldi negativo. E così questo è lo scopo di questo do / while. Continuiamo loop mentre dollari è minore di zero. E un do / while è la cosa giusta utilizzare qui, poiché abbiamo bisogno di chiedere il utente almeno una volta per come molto denaro è dovuto. Così una volta abbiamo che il numero di dollari, vediamo qui abbiamo centesimi int uguale rotonda volte dollars CENTS_PER_DOLLAR. Nella parte superiore, vediamo che CENTS_PER_DOLLAR è sensibilmente definito come 100. Così che cosa sta facendo questa linea? Beh, se vi ricordate, in virgola mobile valori non sono abbastanza precisi. A differenza dei numeri interi, non possiamo rappresentare valori in virgola mobile con precisione. C'è sempre qualche tipo di imprecisione. Quindi preferiamo lavorare solo con numeri interi tutto questo problema. E qui, se l'utente ha immesso 3,42 dollari, stiamo convertendo che a 342 centesimi e arrotondamenti, solo sbarazzarsi di qualsiasi di tale imprecisione. Quindi, una volta che abbiamo il numero di centesimi un numero intero, si può continuare con l' resto del programma. Vediamo qui che stiamo dichiarando intero monete che siamo solo ad utilizzare per tenere traccia della forza numero di monete. Qui, abbiamo il nostro primo ciclo while. Vediamo mentre centesimi è superiore o pari a trimestre, che in precedenza, è hash definito come 25, mentre questo è vero, desidera incrementare il nostro numero di monete e centesimi decremento per trimestre. Ricordate che questa sintassi è equivalente a centesimi uguale centesimi meno trimestre. Questi sono gli stessi. Così che cosa sta facendo questo ciclo while? L'idea è che, se so $ 3,42 è dovuto, posso continuare a dare quarti fino a quando non posso dare quartieri più. Non posso dare quartieri più, una volta ho dato $ 3,25. Allora, una volta che questo è il caso, faremo uscire da questo ciclo while. Cents saranno lasciati a 17 centesimi. E continueremo fino alla prossima while in cui diciamo, mentre centesimi è maggiore o uguale al centesimo. E ora stiamo facendo lo stesso cosa che abbiamo fatto nel caso trimestre, tranne che con Dimes. Quindi, con 0,17 dollari, faremo ciclo finché possiamo non dare una monetina, che è esattamente una volta. E poi saremo lasciati con 7 centesimi. Poi continueremo a monetine, che Vi ciclo finché non possiamo dare eventuali altre monetine, che sarà ci lascia con due centesimi. E poi, giù in fondo, abbiamo centesimi, che in loop e volontà infine ci lascia con zero centesimi. Poi, alla fine, abbiamo solo bisogno di stampare la nostra numero di monete. Quindi questo programma è perfettamente corretto. Ma possiamo davvero fare un po 'meglio. Ora, se io dico che ti devo $ 10.000, non dovrebbe essere necessario andare qui è uno quarto, due quarti, tre quarti. Si deve sapere subito che Ti devo 40.000 trimestri. Ora diamo un'occhiata a un programma che gestisce un po 'meglio. In questa versione delle cose, abbiamo ancora bisogno per chiedere all'utente per la quantità di cambiamento che vogliono esattamente Allo stesso modo abbiamo fatto prima. Abbiamo bisogno di arrotondare esattamente il modo in cui abbiamo fatto prima. E abbiamo ancora le nostre monete intero dichiarato esattamente come prima. Quindi, ecco dove le cose ottenere un po 'diverso. Stiamo facendo le monete più uguali centesimi divisi per quartiere dove trimestre è di 25. Ciò sta dicendo è, prendere come molti quarti come possono andare in centesimi e aggiungere che, per le monete. Quindi, se centesimi è 142, 142 diviso 25 ci dà 5. Ricorda che divisione intera tronca automaticamente. Quindi stiamo facendo le monete più uguale a 5. Subito dopo questo, stiamo dicendo centesimi centesimi pari trimestre mod. Ricordate che l'operatore mod dà noi il resto dopo la divisione. Quindi 142 trimestre mod, che darà è 142 meno 125, che è 17. Questo è il resto dopo facendo 142 diviso per 25. Così ora centesimi è pari a 17. E noi facciamo lo stesso cosa per Dimes. 17 diviso 10 ci darà 1. E aggiungiamo che alle monete. E allora aggiorniamo centesimi a essere 17 mod 10, che è 7. E poi lo stesso per monetine. 7 diviso 5 è 1. Aggiungi che per le monete. E poi 7 mod 5 è 2. E questo è il nostro centesimi. E poi, per pochi spiccioli, non c'è alcuna reale punto di divisione o di modding, in quanto, se abbiamo 0,2 dollari a sinistra sopra, possiamo basta aggiungere subito che per il numero di monete. E, infine, abbiamo bisogno di stampare la nostra numero di monete e, opzionalmente, ritorno 0 alla fine del nostro programma per significare tutto ha funzionato. Il mio nome è Rob. E questo era avido. [GIOCO MUSICA]