>> [Παίζει μουσική]
>> ROB BOWDEN: Hi.
Είμαι Rob.
Και ας πάρει άπληστοι.
>> Έτσι, το πρώτο πράγμα που πρέπει να κάνουμε είναι να ζητήσει από το χρήστη πώς ακριβώς
μεγάλη αλλαγή οφείλεται.
Μέχρι εδώ, βλέπουμε έχουμε ένα do / while loop.
Και είμαστε ρύθμιση δολάρια ίση με GetFloat.
Τι είναι GetFloat;
Είναι μία από τις λειτουργίες της Βιβλιοθήκη CS50 που παίρνει μια
επιπλέουν από το χρήστη.
Θυμηθείτε, για να χρησιμοποιήσετε τη λειτουργία αυτή, θα πρέπει να περιλαμβάνουν hash
CS50.h στην κορυφή.
>> Έτσι, τη στιγμή που έχουμε την τιμή αυτή από το χρήστη, θα πρέπει επίσης να είμαστε σίγουροι ότι
είναι μια έγκυρη τιμή.
Εμείς δεν μπορούμε να χρωστάμε αρνητική χρήματα.
Και έτσι αυτός είναι ο σκοπός αυτής do / while loop.
Συνεχίζουμε looping, ενώ δολάρια είναι μικρότερο από μηδέν.
Και ένα do / while loop είναι το σωστό να χρησιμοποιηθεί εδώ, δεδομένου ότι θα πρέπει να ζητήσει από το
χρήστη τουλάχιστον μία φορά για πόσο πολλά χρήματα που οφείλονται.
>> Έτσι, τη στιγμή που έχουμε τον αριθμό των δολαρίων, βλέπουμε εδώ έχουμε int σεντ
ισούται γύρο δολάρια φορές CENTS_PER_DOLLAR.
Στην κορυφή, βλέπουμε ότι CENTS_PER_DOLLAR είναι
λογικά ορίζεται ως 100.
Έτσι, αυτό που κάνει αυτή τη γραμμή;
>> Λοιπόν, αν θυμάστε, κινητής υποδιαστολής τιμές δεν είναι αρκετά ακριβείς.
Σε αντίθεση με ακέραιους αριθμούς, δεν μπορούμε να αντιπροσωπεύουν τιμές κινητής υποδιαστολής ακριβώς.
Υπάρχει πάντα κάποιο είδος ανακρίβειας.
Γι 'αυτό και προτιμούν να εργάζονται με μόνο ακέραιους όλη αυτό το πρόβλημα.
Και εδώ, αν ο χρήστης εισάγει $ 3.42, είμαστε το μετατρέπει σε 342 σεντ και
στρογγυλοποίηση, απλά να απαλλαγούμε από κανένα από αυτά τα ανακρίβεια.
>> Έτσι, τη στιγμή που έχουμε τον αριθμό των λεπτών σε ακέραιος, μπορούμε να συνεχίσουμε με το
υπόλοιπο του προγράμματος.
Βλέπουμε εδώ ότι είμαστε δηλώνοντας ακέραιος κέρματα που είμαστε μόνο να χρησιμοποιούν
να παρακολουθείτε το συνολικό αριθμό κερμάτων.
Εδώ, έχουμε το πρώτο μας βρόχο while.
>> Βλέπουμε ενώ σεντ είναι μεγαλύτερη ή ίσο με το τρίμηνο, το οποίο παραπάνω, είναι hash
που ορίζεται ως 25, ενώ αυτό αληθεύει, μπορούμε θέλετε να αυξήσετε τον αριθμό των νομισμάτων μας
και μείωσης σεντς ανά τρίμηνο.
Να θυμάστε ότι αυτή η σύνταξη είναι ισοδύναμο με σεντς
ισούται σεντ μείον τρίμηνο.
Αυτά είναι τα ίδια.
>> Έτσι, αυτό που κάνει αυτό, ενώ βρόχο;
Η ιδέα εδώ είναι ότι, αν γνωρίζω 3,42 δολάρια οφείλεται, μπορώ να συνεχίσει να δίνει
τέταρτα μέχρι που δεν μπορεί να δώσει τέταρτα πια.
Δεν μπορώ να δώσω τέταρτα πια, τη στιγμή που έχω δώσει 3,25 δολάρια.
>> Έτσι, στη συνέχεια, τη στιγμή που αυτή είναι η περίπτωση, θα ξεφύγουμε από αυτόν τον βρόχο while.
Cents θα μείνει στα 17 σεντ.
Και εμείς θα συνεχίσουμε στο επόμενο while loop όπου λέμε, ενώ σεντ
είναι μεγαλύτερο από ή ίσο με δεκάρα.
>> Και τώρα κάνουμε ακριβώς το ίδιο πράγμα που κάναμε στο τρίμηνο περίπτωση,
παρά μόνο με δεκάρες.
Έτσι, με 0,17 δολάρια, θα το βρόχο μέχρι μπορούμε πλέον να δώσει μια δεκάρα, η οποία είναι
ακριβώς μια φορά.
Και τότε θα πρέπει να μείνει με 7 σεντ.
>> Στη συνέχεια, θα συνεχίσετε προς σεντς, η οποία θα το βρόχο μέχρι δεν μπορούμε να δώσουμε
τυχόν περισσότερες nickels, η οποία θα μας αφήνει με δύο σεντς.
Και στη συνέχεια, προς τα κάτω στο κάτω μέρος, έχουμε πένες, η οποία θα στραφεί και θα
τέλος μας αφήνουν με μηδενική σεντς.
Στη συνέχεια, στο τέλος, εμείς απλά πρέπει να εκτυπώσετε τον αριθμό των νομισμάτων μας.
>> Έτσι, το πρόγραμμα αυτό είναι απολύτως σωστό.
Αλλά μπορούμε πραγματικά να κάνουμε λίγο καλύτερα.
Τώρα, αν πω ότι σου χρωστάω $ 10.000, δεν θα χρειαστεί να πάει εδώ είναι ένα
τρίμηνο, δύο τρίμηνα, τα τρία τέταρτα.
Θα πρέπει να ξέρετε αμέσως ότι Σου χρωστάω 40.000 τρίμηνα.
>> Τώρα, ας ρίξουμε μια ματιά σε ένα πρόγραμμα που χειρίζεται το λίγο καλύτερα.
Σε αυτή την έκδοση των πραγμάτων, εξακολουθούμε να χρειαζόμαστε να ζητήσει από το χρήστη για το ποσό των
αλλάξετε ότι θέλουν ακριβώς με τον ίδιο τρόπο που κάναμε πριν.
Πρέπει να στρογγυλοποιεί ακριβώς ο τρόπος που κάναμε πριν.
Και έχουμε ακόμα μας νομίσματα ακέραιος δηλωθεί ακριβώς η ίδια όπως πριν.
>> Έτσι, εδώ είναι όπου τα πράγματα πάρετε μια λίγο διαφορετική.
Κάνουμε τα κέρματα καθώς και ίσων σεντ δια τρίμηνο
όπου τρίμηνο είναι 25.
Αυτό που λέει είναι, πάρει όσο πιο πολλά τρίμηνα, καθώς μπορεί να πάει σε σεντ και να προσθέσετε
ότι τα κέρματα.
>> Έτσι, αν σεντ είναι 142, 142 διαιρείται 25 μας δίνει 5.
Να θυμάστε ότι διαίρεσης περικόπτει αυτόματα.
Έτσι, κάνουμε τα κέρματα συν ισούται με 5.
>> Αμέσως μετά από αυτό, λέμε σεντ σεντ ίσες mod τρίμηνο.
Να θυμάστε ότι ο χειριστής δίνει mod μας το υπόλοιπο μιας διαίρεσης.
Έτσι, 142 mod τρίμηνο, που θα δώσει είναι 142 μείον 125, η οποία είναι 17.
Αυτό είναι το υπόλοιπο μετά κάνει 142 διαιρούμενο με 25.
>> Έτσι τώρα σεντ είναι ίση με 17.
Και εμείς κάνουμε ακριβώς το ίδιο πράγμα για δεκάρες.
17 διαιρούμενο με το 10 θα μας δώσει 1.
Και θα προσθέσω ότι τα κέρματα.
Και τότε θα ενημερώσετε σεντς, φθάνοντας στα είναι 17 mod 10, το οποίο είναι 7.
>> Και στη συνέχεια το ίδιο για επινικελώνουν.
7 δια 5 είναι 1.
Πρόσθεσε ότι τα κέρματα.
Και στη συνέχεια 7 mod 5 είναι 2.
Και αυτό είναι σεντ μας.
>> Και στη συνέχεια, για τις πένες, δεν υπάρχει πραγματική σημείο διαχωρισμού ή modding, δεδομένου ότι,
αν έχουμε 0,2 δολάρια πάνω αριστερά, μπορούμε να απλά να προσθέσω αμέσως ότι για να
τον αριθμό των κερμάτων μας.
Και τέλος, θα πρέπει να εκτυπώσετε μας αριθμό νομισμάτων και, προαιρετικώς,
επιστροφή 0 στο τέλος του προγράμματός μας για να δηλώσει όλα δούλεψαν.
>> Το όνομά μου είναι Rob.
Και αυτό ήταν άπληστοι.
>> [Παίζει μουσική]