ROB BOWDEN: Γεια σου, είμαι Rob. Και ελπίζω να χρεώνεστε up για την πίστωση. Έτσι, το πρώτο πράγμα που πρέπει να κάνουμε είναι να ζητήσει από την πιστωτική κάρτα αριθμό από το χρήστη. Εδώ, είμαστε χρησιμοποιώντας getLongLong. Θα μπορούσε επίσης να χρησιμοποιηθεί GetString, αλλά στην περίπτωση αυτή, θα πρέπει να ελέγξετε ότι δεν υπήρχαν μη-αριθμητικό χαρακτήρες στη συμβολοσειρά. Έτσι, θα χρησιμοποιήσουμε getLongLong. Να θυμάστε ότι δεν μπορείτε να χρησιμοποιήσετε κάτι όπως getInt, δεδομένου ότι ο αριθμός θα είναι πάρα πολύ μεγάλο για να χωρέσει σε ένα ακέραιο. Μόλις έχουμε τον αριθμό αυτό, εμείς δείτε εδώ αυτό το βρόχο while. Έτσι, αυτό το βρόχο, ενώ εφαρμόζει Αλγόριθμος Luhn του ότι θα δείτε το spec το chipset. Και αυτό πραγματικά συμβαίνει να είναι λίγο έξυπνος. Έτσι, στο spec από το chipset, παρατηρούμε ότι Τα βήματα ένα και δύο είναι ξεχωριστά. Πρέπει πρώτα να πάτε σε όλη την πιστωτική κάρτα αριθμό, ψάχνει για κάθε άλλη χαρακτήρων που ξεκινούν από τη δεύτερη στην τελευταίο χαρακτήρα, και να πολλαπλασιάζονται και προσθέτοντας όλα τα ψηφία. Στη συνέχεια, μετά από αυτό, προσθέτουμε στο όλα τα άλλα ψηφία. Έτσι, αντί να κάνουν εκείνοι σε δύο ξεχωριστά βήματα, θα πάμε να συνδυάσει τους σε μία επανάληψη κατά τη διάρκεια των ολόκληρο τον αριθμό της πιστωτικής κάρτας. Εδώ, βλέπουμε int τρέχουσα ψηφίο ισούται τον αριθμό της πιστωτικής κάρτας, mod 10. Ποιος είναι ο αριθμός της πιστωτικής κάρτας mod 10 κάνει; , Μας έδωσε το τελευταίο ψηφίο σε ακέραιο αριθμό. Έτσι, να θυμάστε ότι αν διαιρεθεί το αριθμούν πάνω από 10, τότε το υπόλοιπο Θα είναι ό, τι το τελευταίο ψηφίο είναι. 23 διαιρούμενο με 10, ο υπόλοιπο θα είναι 3. Έτσι το τελευταίο ψηφίο, τώρα εδώ, βλέπουμε είμαστε διακλάδωση για mult από 2. Λοιπόν, τι θα πάμε να χρησιμοποιούν mult με 2 για το διαφοροποίηση μεταξύ μία από τις «κάθε άλλο αριθμούς από το δεύτερο ψηφίο "αριθμούς. Mult από 2 πρόκειται να ξεκινήσει ως ψευδείς, δεδομένου ότι το τελευταίο ψηφίο δεν πρέπει να θεωρηθεί από το το δεύτερο στο τελευταίο ψηφίο. Έτσι, στη συνέχεια, στο τέλος αυτού του βρόχου for, εμείς δείτε ότι θα πάμε να το αλλάξουμε αυτό από ψευδή σε αληθή. Στην επόμενη επανάληψη του βρόχου for, πρόκειται να θεωρηθεί ότι ισχύει μέχρι το τέλος, όταν αλλάζουμε το από αληθινή σε false. Διότι τότε θα είμαστε στο τρίτο τελευταίο ψηφίο, το οποίο δεν είναι μία από τις ψηφία που πρέπει να πολλαπλασιάσουμε με το 2. Έτσι, αν τυχαίνει να είναι ένας από εκείνους ψηφία που θέλουμε να πολλαπλασιάσουμε με 2, βλέπουμε είμαστε προσθήκη στο άθροισμα ελέγχου μας. Και εδώ, είμαστε χρησιμοποιώντας το τριαδικό φορέα να φορά και πάλι να είναι λίγο έξυπνος. Έτσι εάν τρέχουσα ψηφίο είναι μικρότερο από 5, τότε μπορούμε να κάνουμε ακριβώς τρέχουσα ψηφίο 2 φορές. Αυτό είναι απλό. Αν είναι 1, τότε θα θέλετε να προσθέσετε 2. Αν είναι 2, θέλουμε να προσθέσουμε 4. Αν είναι 4, θέλουμε να προσθέσουμε 8. Έτσι τι είναι ιδιαίτερο για 5; Λοιπόν, 5 φορές 2 είναι 10. Και να θυμάστε από το spec το chipset που θέλουμε να προσθέσουμε τα ψηφία του φορές τον αριθμό 2, και όχι η φορές τον αριθμό 2 η ίδια. Έτσι, εάν ο αρχικός αριθμός είναι 7, 7 φορές 2 είναι 14. Θέλουμε να προσθέσετε 1 συν 4 με τον αριθμό, όχι 14. Τόσο εδώ, αν ο αριθμός είναι 5 ή μεγαλύτερο, αυτό που κάνουμε είναι τρέχουσα ψηφίο 2 φορές μείον 9. Και αν νομίζετε γι 'αυτό, 5 φορές 2 είναι 10. Και έτσι είμαστε προσθέτοντας 1, η οποία είναι 10 μείον 9. Και 6 φορές 2 είναι 12. Έτσι είμαστε προσθήκη 3, η οποία είναι 12 μείον 9. Και αυτό λειτουργεί για όλους τους αριθμούς. Οπότε αυτό είναι που είμαστε προσθήκη στο άθροισμα ελέγχου μας. Και αυτό το άλλο είναι το τι χειρισμοί Βήμα Δύο αλγόριθμο Luhn, η οποία είναι μόλις προσθέτοντας το ψηφίο, εάν δεν συμβεί να είναι ένα από τα κάθε άλλη ψηφία. Έτσι, τη στιγμή που έχουμε αυτό, αυτό είναι η διατήρηση μετατρόχιο των δύο πρώτοι χαρακτήρες του ο αριθμός της πιστωτικής κάρτας, τα δύο πρώτα ψηφία, δεδομένου ότι είμαστε τελικά θα να θέλετε να χρησιμοποιήσετε το κάτω εδώ για να επιβεβαιώσετε, Εντάξει, μια Visa πρέπει να αρχίσει με αυτό, και απαιτείται από μια American Express για να ξεκινήσει με αυτό, και ούτω καθεξής. Τέλος, κάνουμε τις πιστωτικές κάρτες αριθμός ισούται με πιστωτική κάρτα αριθμός διαιρείται με 10. Γιατί το κάνουμε αυτό; Λοιπόν, διαχειριστήκαμε μόνο το τελευταίο ψηφίο. Διαιρώντας με 10 θα μετατοπιστεί ολόκληρος ο αριθμός πάνω. Μέχρι τώρα, όταν θα στραφεί προς τα πίσω, είμαστε πρόκειται να χειρίζεται το το δεύτερο στο τελευταίο ψηφίο. Στη συνέχεια, όταν θα χτυπήσει και πάλι, θα πάμε να κόψει το δεύτερο για να διαρκέσει ψηφίο, πίσω βρόχο, και να χειριστεί το τρίτο να τελευταίο ψηφίο, και ούτω καθεξής, έως ότου η αριθμός τους ανέρχεται σε 0, σε ποιο σημείο έχουμε ξεφύγει από τον βρόχο while. Είμαστε, επίσης, την παρακολούθηση του πιστωτικού Μήκος τον αριθμό της κάρτας, δεδομένου ότι αυτό είναι σημαντικό να γίνει διάκριση αν είναι ένα έγκυρο αριθμό πιστωτικής κάρτας. Έτσι τώρα, αφού έχουμε υπολογίζεται η αθροίσματος ελέγχου, μπορούμε να καθορίσουμε αν είναι μια έγκυρη κάρτα. Η mod checksum 10 αποτελεί μέρος του αλγορίθμου Luhn του. Αν αθροίσματος mod 10 επιστρέφει κάτι μη μηδενική, τότε αυτό θα επιστρέψει αλήθεια, στην οποία περίπτωση, ο αριθμός πρέπει να είναι άκυρη. Διαφορετικά, αν αθροίσματος ελέγχου mod 10 είναι 0, τότε μπορούμε να συνεχίσουμε. Αυτό το μεγάλο Αλλιώς αν λέει, αν η πρώτη δύο ψηφία είναι ίσα με 1 AMEX, όπου μέχρι εδώ, βλέπουμε ότι AMEX 1, σύμφωνα με την προδιαγραφή, είναι 34. Και επίσης θα πρέπει να συγκρίνετε προς AMEX 2, η οποία είναι 37. Και η πιστωτική κάρτα μήκος αριθμού είναι ισούται με την αναμενόμενη American Express το μήκος της κάρτας, τότε μπορούμε να εκτύπωση American Express. Θα κάνουμε ένα παρόμοιο πράγμα με τη Visa. Τα δύο πρώτα ψηφία χρειάζεται να είναι μεγαλύτερη από ή ίση με 40, ή λιγότερο από ή ίση με 49. Αυτοί αντιπροσωπεύουν τις έγκυρες κάρτες Visa. Και το μήκος πρέπει να είναι ίση προς Visa Μήκος 1 ή Visa Μήκος 2. Και έτσι το μήκος πρέπει να είναι είτε Μήκος 13 ή 16 ψηφία. Και, τέλος, με τη MasterCard, είναι παρόμοια με τη Visa, ότι οι δύο πρώτες ψηφία χρειάζεται να είναι σε μια ορισμένη εύρος και το μήκος πρέπει να είναι ακριβώς 16 ψηφία. Έτσι, αν κάποια από αυτές τις περιπτώσεις να κατέχει, στη συνέχεια, η πρώτη περίπτωση, θα εκτυπώσετε AMEX. Αν η υπόθεση αυτή ισχύει, θα εκτυπώσετε Visa. Αν η υπόθεση αυτή ισχύει, θα εκτύπωση MasterCard. Αλλά αν κανένας από αυτούς δεν κατέχουν, ακόμη και αν το άθροισμα ελέγχου ήταν έγκυρη, εξακολουθούμε να εκτυπώσετε άκυρη. Επειδή δεν είναι ένα από τα αυτά τα είδη των καρτών. Το όνομά μου είναι Rob, και ελπίζω να βρέθηκαν πιστωτική ενδιαφέρον.