1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [Παίζει μουσική] 3 00:00:11,431 --> 00:00:12,500 >> ROB BOWDEN: Hi. 4 00:00:12,500 --> 00:00:13,230 Είμαι Rob. 5 00:00:13,230 --> 00:00:15,080 Και ας πάρει άπληστοι. 6 00:00:15,080 --> 00:00:18,560 >> Έτσι, το πρώτο πράγμα που πρέπει να κάνουμε είναι να ζητήσει από το χρήστη πώς ακριβώς 7 00:00:18,560 --> 00:00:20,500 μεγάλη αλλαγή οφείλεται. 8 00:00:20,500 --> 00:00:23,310 Μέχρι εδώ, βλέπουμε έχουμε ένα do / while loop. 9 00:00:23,310 --> 00:00:26,650 Και είμαστε ρύθμιση δολάρια ίση με GetFloat. 10 00:00:26,650 --> 00:00:27,890 Τι είναι GetFloat; 11 00:00:27,890 --> 00:00:30,700 Είναι μία από τις λειτουργίες της Βιβλιοθήκη CS50 που παίρνει μια 12 00:00:30,700 --> 00:00:32,450 επιπλέουν από το χρήστη. 13 00:00:32,450 --> 00:00:35,200 Θυμηθείτε, για να χρησιμοποιήσετε τη λειτουργία αυτή, θα πρέπει να περιλαμβάνουν hash 14 00:00:35,200 --> 00:00:37,790 CS50.h στην κορυφή. 15 00:00:37,790 --> 00:00:42,310 >> Έτσι, τη στιγμή που έχουμε την τιμή αυτή από το χρήστη, θα πρέπει επίσης να είμαστε σίγουροι ότι 16 00:00:42,310 --> 00:00:43,560 είναι μια έγκυρη τιμή. 17 00:00:43,560 --> 00:00:46,050 Εμείς δεν μπορούμε να χρωστάμε αρνητική χρήματα. 18 00:00:46,050 --> 00:00:48,460 Και έτσι αυτός είναι ο σκοπός αυτής do / while loop. 19 00:00:48,460 --> 00:00:52,420 Συνεχίζουμε looping, ενώ δολάρια είναι μικρότερο από μηδέν. 20 00:00:52,420 --> 00:00:56,960 Και ένα do / while loop είναι το σωστό να χρησιμοποιηθεί εδώ, δεδομένου ότι θα πρέπει να ζητήσει από το 21 00:00:56,960 --> 00:01:00,290 χρήστη τουλάχιστον μία φορά για πόσο πολλά χρήματα που οφείλονται. 22 00:01:00,290 --> 00:01:05,040 >> Έτσι, τη στιγμή που έχουμε τον αριθμό των δολαρίων, βλέπουμε εδώ έχουμε int σεντ 23 00:01:05,040 --> 00:01:08,630 ισούται γύρο δολάρια φορές CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 Στην κορυφή, βλέπουμε ότι CENTS_PER_DOLLAR είναι 25 00:01:10,740 --> 00:01:13,750 λογικά ορίζεται ως 100. 26 00:01:13,750 --> 00:01:16,270 Έτσι, αυτό που κάνει αυτή τη γραμμή; 27 00:01:16,270 --> 00:01:21,200 >> Λοιπόν, αν θυμάστε, κινητής υποδιαστολής τιμές δεν είναι αρκετά ακριβείς. 28 00:01:21,200 --> 00:01:25,470 Σε αντίθεση με ακέραιους αριθμούς, δεν μπορούμε να αντιπροσωπεύουν τιμές κινητής υποδιαστολής ακριβώς. 29 00:01:25,470 --> 00:01:28,660 Υπάρχει πάντα κάποιο είδος ανακρίβειας. 30 00:01:28,660 --> 00:01:32,840 Γι 'αυτό και προτιμούν να εργάζονται με μόνο ακέραιους όλη αυτό το πρόβλημα. 31 00:01:32,840 --> 00:01:42,690 Και εδώ, αν ο χρήστης εισάγει $ 3.42, είμαστε το μετατρέπει σε 342 σεντ και 32 00:01:42,690 --> 00:01:45,900 στρογγυλοποίηση, απλά να απαλλαγούμε από κανένα από αυτά τα ανακρίβεια. 33 00:01:45,900 --> 00:01:49,940 >> Έτσι, τη στιγμή που έχουμε τον αριθμό των λεπτών σε ακέραιος, μπορούμε να συνεχίσουμε με το 34 00:01:49,940 --> 00:01:51,730 υπόλοιπο του προγράμματος. 35 00:01:51,730 --> 00:01:55,910 Βλέπουμε εδώ ότι είμαστε δηλώνοντας ακέραιος κέρματα που είμαστε μόνο να χρησιμοποιούν 36 00:01:55,910 --> 00:01:59,560 να παρακολουθείτε το συνολικό αριθμό κερμάτων. 37 00:01:59,560 --> 00:02:01,590 Εδώ, έχουμε το πρώτο μας βρόχο while. 38 00:02:01,590 --> 00:02:06,780 >> Βλέπουμε ενώ σεντ είναι μεγαλύτερη ή ίσο με το τρίμηνο, το οποίο παραπάνω, είναι hash 39 00:02:06,780 --> 00:02:14,680 που ορίζεται ως 25, ενώ αυτό αληθεύει, μπορούμε θέλετε να αυξήσετε τον αριθμό των νομισμάτων μας 40 00:02:14,680 --> 00:02:18,350 και μείωσης σεντς ανά τρίμηνο. 41 00:02:18,350 --> 00:02:22,810 Να θυμάστε ότι αυτή η σύνταξη είναι ισοδύναμο με σεντς 42 00:02:22,810 --> 00:02:26,020 ισούται σεντ μείον τρίμηνο. 43 00:02:26,020 --> 00:02:28,170 Αυτά είναι τα ίδια. 44 00:02:28,170 --> 00:02:31,850 >> Έτσι, αυτό που κάνει αυτό, ενώ βρόχο; 45 00:02:31,850 --> 00:02:39,260 Η ιδέα εδώ είναι ότι, αν γνωρίζω 3,42 δολάρια οφείλεται, μπορώ να συνεχίσει να δίνει 46 00:02:39,260 --> 00:02:42,670 τέταρτα μέχρι που δεν μπορεί να δώσει τέταρτα πια. 47 00:02:42,670 --> 00:02:47,720 Δεν μπορώ να δώσω τέταρτα πια, τη στιγμή που έχω δώσει 3,25 δολάρια. 48 00:02:47,720 --> 00:02:53,300 >> Έτσι, στη συνέχεια, τη στιγμή που αυτή είναι η περίπτωση, θα ξεφύγουμε από αυτόν τον βρόχο while. 49 00:02:53,300 --> 00:02:57,650 Cents θα μείνει στα 17 σεντ. 50 00:02:57,650 --> 00:03:01,910 Και εμείς θα συνεχίσουμε στο επόμενο while loop όπου λέμε, ενώ σεντ 51 00:03:01,910 --> 00:03:04,270 είναι μεγαλύτερο από ή ίσο με δεκάρα. 52 00:03:04,270 --> 00:03:07,420 >> Και τώρα κάνουμε ακριβώς το ίδιο πράγμα που κάναμε στο τρίμηνο περίπτωση, 53 00:03:07,420 --> 00:03:09,010 παρά μόνο με δεκάρες. 54 00:03:09,010 --> 00:03:15,050 Έτσι, με 0,17 δολάρια, θα το βρόχο μέχρι μπορούμε πλέον να δώσει μια δεκάρα, η οποία είναι 55 00:03:15,050 --> 00:03:16,680 ακριβώς μια φορά. 56 00:03:16,680 --> 00:03:20,470 Και τότε θα πρέπει να μείνει με 7 σεντ. 57 00:03:20,470 --> 00:03:24,730 >> Στη συνέχεια, θα συνεχίσετε προς σεντς, η οποία θα το βρόχο μέχρι δεν μπορούμε να δώσουμε 58 00:03:24,730 --> 00:03:29,420 τυχόν περισσότερες nickels, η οποία θα μας αφήνει με δύο σεντς. 59 00:03:29,420 --> 00:03:34,400 Και στη συνέχεια, προς τα κάτω στο κάτω μέρος, έχουμε πένες, η οποία θα στραφεί και θα 60 00:03:34,400 --> 00:03:37,140 τέλος μας αφήνουν με μηδενική σεντς. 61 00:03:37,140 --> 00:03:41,670 Στη συνέχεια, στο τέλος, εμείς απλά πρέπει να εκτυπώσετε τον αριθμό των νομισμάτων μας. 62 00:03:41,670 --> 00:03:44,980 >> Έτσι, το πρόγραμμα αυτό είναι απολύτως σωστό. 63 00:03:44,980 --> 00:03:47,310 Αλλά μπορούμε πραγματικά να κάνουμε λίγο καλύτερα. 64 00:03:47,310 --> 00:03:52,660 Τώρα, αν πω ότι σου χρωστάω $ 10.000, δεν θα χρειαστεί να πάει εδώ είναι ένα 65 00:03:52,660 --> 00:03:55,310 τρίμηνο, δύο τρίμηνα, τα τρία τέταρτα. 66 00:03:55,310 --> 00:03:59,450 Θα πρέπει να ξέρετε αμέσως ότι Σου χρωστάω 40.000 τρίμηνα. 67 00:03:59,450 --> 00:04:04,070 >> Τώρα, ας ρίξουμε μια ματιά σε ένα πρόγραμμα που χειρίζεται το λίγο καλύτερα. 68 00:04:04,070 --> 00:04:07,190 Σε αυτή την έκδοση των πραγμάτων, εξακολουθούμε να χρειαζόμαστε να ζητήσει από το χρήστη για το ποσό των 69 00:04:07,190 --> 00:04:10,930 αλλάξετε ότι θέλουν ακριβώς με τον ίδιο τρόπο που κάναμε πριν. 70 00:04:10,930 --> 00:04:14,110 Πρέπει να στρογγυλοποιεί ακριβώς ο τρόπος που κάναμε πριν. 71 00:04:14,110 --> 00:04:17,910 Και έχουμε ακόμα μας νομίσματα ακέραιος δηλωθεί ακριβώς η ίδια όπως πριν. 72 00:04:17,910 --> 00:04:21,399 >> Έτσι, εδώ είναι όπου τα πράγματα πάρετε μια λίγο διαφορετική. 73 00:04:21,399 --> 00:04:24,640 Κάνουμε τα κέρματα καθώς και ίσων σεντ δια τρίμηνο 74 00:04:24,640 --> 00:04:27,140 όπου τρίμηνο είναι 25. 75 00:04:27,140 --> 00:04:31,790 Αυτό που λέει είναι, πάρει όσο πιο πολλά τρίμηνα, καθώς μπορεί να πάει σε σεντ και να προσθέσετε 76 00:04:31,790 --> 00:04:33,030 ότι τα κέρματα. 77 00:04:33,030 --> 00:04:40,100 >> Έτσι, αν σεντ είναι 142, 142 διαιρείται 25 μας δίνει 5. 78 00:04:40,100 --> 00:04:43,950 Να θυμάστε ότι διαίρεσης περικόπτει αυτόματα. 79 00:04:43,950 --> 00:04:46,870 Έτσι, κάνουμε τα κέρματα συν ισούται με 5. 80 00:04:46,870 --> 00:04:51,850 >> Αμέσως μετά από αυτό, λέμε σεντ σεντ ίσες mod τρίμηνο. 81 00:04:51,850 --> 00:04:57,150 Να θυμάστε ότι ο χειριστής δίνει mod μας το υπόλοιπο μιας διαίρεσης. 82 00:04:57,150 --> 00:05:05,840 Έτσι, 142 mod τρίμηνο, που θα δώσει είναι 142 μείον 125, η οποία είναι 17. 83 00:05:05,840 --> 00:05:10,470 Αυτό είναι το υπόλοιπο μετά κάνει 142 διαιρούμενο με 25. 84 00:05:10,470 --> 00:05:13,040 >> Έτσι τώρα σεντ είναι ίση με 17. 85 00:05:13,040 --> 00:05:16,080 Και εμείς κάνουμε ακριβώς το ίδιο πράγμα για δεκάρες. 86 00:05:16,080 --> 00:05:18,620 17 διαιρούμενο με το 10 θα μας δώσει 1. 87 00:05:18,620 --> 00:05:20,150 Και θα προσθέσω ότι τα κέρματα. 88 00:05:20,150 --> 00:05:25,380 Και τότε θα ενημερώσετε σεντς, φθάνοντας στα είναι 17 mod 10, το οποίο είναι 7. 89 00:05:25,380 --> 00:05:27,200 >> Και στη συνέχεια το ίδιο για επινικελώνουν. 90 00:05:27,200 --> 00:05:29,180 7 δια 5 είναι 1. 91 00:05:29,180 --> 00:05:30,880 Πρόσθεσε ότι τα κέρματα. 92 00:05:30,880 --> 00:05:34,600 Και στη συνέχεια 7 mod 5 είναι 2. 93 00:05:34,600 --> 00:05:35,910 Και αυτό είναι σεντ μας. 94 00:05:35,910 --> 00:05:39,065 >> Και στη συνέχεια, για τις πένες, δεν υπάρχει πραγματική σημείο διαχωρισμού ή modding, δεδομένου ότι, 95 00:05:39,065 --> 00:05:42,170 αν έχουμε 0,2 δολάρια πάνω αριστερά, μπορούμε να απλά να προσθέσω αμέσως ότι για να 96 00:05:42,170 --> 00:05:43,590 τον αριθμό των κερμάτων μας. 97 00:05:43,590 --> 00:05:48,210 Και τέλος, θα πρέπει να εκτυπώσετε μας αριθμό νομισμάτων και, προαιρετικώς, 98 00:05:48,210 --> 00:05:52,100 επιστροφή 0 στο τέλος του προγράμματός μας για να δηλώσει όλα δούλεψαν. 99 00:05:52,100 --> 00:05:53,120 >> Το όνομά μου είναι Rob. 100 00:05:53,120 --> 00:05:54,020 Και αυτό ήταν άπληστοι. 101 00:05:54,020 --> 00:05:57,620 >> [Παίζει μουσική] 102 00:05:57,620 --> 00:06:01,515