1 00:00:00,000 --> 00:00:13,290 2 00:00:13,290 --> 00:00:14,570 >> ROB BOWDEN: Γεια σου, είμαι Rob. 3 00:00:14,570 --> 00:00:17,610 Και ελπίζω να χρεώνεστε up για την πίστωση. 4 00:00:17,610 --> 00:00:20,710 Έτσι, το πρώτο πράγμα που πρέπει να κάνουμε είναι να ζητήσει από την πιστωτική κάρτα 5 00:00:20,710 --> 00:00:22,710 αριθμό από το χρήστη. 6 00:00:22,710 --> 00:00:25,060 Εδώ, είμαστε χρησιμοποιώντας getLongLong. 7 00:00:25,060 --> 00:00:29,070 Θα μπορούσε επίσης να χρησιμοποιηθεί GetString, αλλά στην περίπτωση αυτή, θα πρέπει να ελέγξετε 8 00:00:29,070 --> 00:00:32,340 ότι δεν υπήρχαν μη-αριθμητικό χαρακτήρες στη συμβολοσειρά. 9 00:00:32,340 --> 00:00:34,560 Έτσι, θα χρησιμοποιήσουμε getLongLong. 10 00:00:34,560 --> 00:00:38,070 >> Να θυμάστε ότι δεν μπορείτε να χρησιμοποιήσετε κάτι όπως getInt, δεδομένου ότι ο αριθμός θα είναι 11 00:00:38,070 --> 00:00:40,650 πάρα πολύ μεγάλο για να χωρέσει σε ένα ακέραιο. 12 00:00:40,650 --> 00:00:44,480 Μόλις έχουμε τον αριθμό αυτό, εμείς δείτε εδώ αυτό το βρόχο while. 13 00:00:44,480 --> 00:00:48,210 Έτσι, αυτό το βρόχο, ενώ εφαρμόζει Αλγόριθμος Luhn του ότι θα 14 00:00:48,210 --> 00:00:50,980 δείτε το spec το chipset. 15 00:00:50,980 --> 00:00:53,830 >> Και αυτό πραγματικά συμβαίνει να είναι λίγο έξυπνος. 16 00:00:53,830 --> 00:01:00,800 Έτσι, στο spec από το chipset, παρατηρούμε ότι Τα βήματα ένα και δύο είναι ξεχωριστά. 17 00:01:00,800 --> 00:01:05,160 Πρέπει πρώτα να πάτε σε όλη την πιστωτική κάρτα αριθμό, ψάχνει για κάθε άλλη 18 00:01:05,160 --> 00:01:09,775 χαρακτήρων που ξεκινούν από τη δεύτερη στην τελευταίο χαρακτήρα, και να πολλαπλασιάζονται 19 00:01:09,775 --> 00:01:11,750 και προσθέτοντας όλα τα ψηφία. 20 00:01:11,750 --> 00:01:16,150 Στη συνέχεια, μετά από αυτό, προσθέτουμε στο όλα τα άλλα ψηφία. 21 00:01:16,150 --> 00:01:20,660 >> Έτσι, αντί να κάνουν εκείνοι σε δύο ξεχωριστά βήματα, θα πάμε να συνδυάσει 22 00:01:20,660 --> 00:01:24,430 τους σε μία επανάληψη κατά τη διάρκεια των ολόκληρο τον αριθμό της πιστωτικής κάρτας. 23 00:01:24,430 --> 00:01:29,710 Εδώ, βλέπουμε int τρέχουσα ψηφίο ισούται τον αριθμό της πιστωτικής κάρτας, mod 10. 24 00:01:29,710 --> 00:01:32,050 Ποιος είναι ο αριθμός της πιστωτικής κάρτας mod 10 κάνει; 25 00:01:32,050 --> 00:01:35,750 , Μας έδωσε το τελευταίο ψηφίο σε ακέραιο αριθμό. 26 00:01:35,750 --> 00:01:39,340 Έτσι, να θυμάστε ότι αν διαιρεθεί το αριθμούν πάνω από 10, τότε το υπόλοιπο 27 00:01:39,340 --> 00:01:42,180 Θα είναι ό, τι το τελευταίο ψηφίο είναι. 28 00:01:42,180 --> 00:01:46,560 23 διαιρούμενο με 10, ο υπόλοιπο θα είναι 3. 29 00:01:46,560 --> 00:01:53,760 >> Έτσι το τελευταίο ψηφίο, τώρα εδώ, βλέπουμε είμαστε διακλάδωση για mult από 2. 30 00:01:53,760 --> 00:01:57,630 Λοιπόν, τι θα πάμε να χρησιμοποιούν mult με 2 για το διαφοροποίηση μεταξύ 31 00:01:57,630 --> 00:02:02,110 μία από τις «κάθε άλλο αριθμούς από το δεύτερο ψηφίο "αριθμούς. 32 00:02:02,110 --> 00:02:08,310 Mult από 2 πρόκειται να ξεκινήσει ως ψευδείς, δεδομένου ότι το τελευταίο ψηφίο δεν πρέπει 33 00:02:08,310 --> 00:02:11,750 να θεωρηθεί από το το δεύτερο στο τελευταίο ψηφίο. 34 00:02:11,750 --> 00:02:16,760 >> Έτσι, στη συνέχεια, στο τέλος αυτού του βρόχου for, εμείς δείτε ότι θα πάμε να το αλλάξουμε αυτό 35 00:02:16,760 --> 00:02:18,870 από ψευδή σε αληθή. 36 00:02:18,870 --> 00:02:22,520 Στην επόμενη επανάληψη του βρόχου for, πρόκειται να θεωρηθεί ότι ισχύει μέχρι 37 00:02:22,520 --> 00:02:25,090 το τέλος, όταν αλλάζουμε το από αληθινή σε false. 38 00:02:25,090 --> 00:02:28,290 Διότι τότε θα είμαστε στο τρίτο τελευταίο ψηφίο, το οποίο δεν είναι μία από τις 39 00:02:28,290 --> 00:02:32,210 ψηφία που πρέπει να πολλαπλασιάσουμε με το 2. 40 00:02:32,210 --> 00:02:37,410 >> Έτσι, αν τυχαίνει να είναι ένας από εκείνους ψηφία που θέλουμε να πολλαπλασιάσουμε με 2, 41 00:02:37,410 --> 00:02:40,610 βλέπουμε είμαστε προσθήκη στο άθροισμα ελέγχου μας. 42 00:02:40,610 --> 00:02:43,640 Και εδώ, είμαστε χρησιμοποιώντας το τριαδικό φορέα να φορά 43 00:02:43,640 --> 00:02:45,470 και πάλι να είναι λίγο έξυπνος. 44 00:02:45,470 --> 00:02:50,170 Έτσι εάν τρέχουσα ψηφίο είναι μικρότερο από 5, τότε μπορούμε να κάνουμε ακριβώς τρέχουσα ψηφίο 2 φορές. 45 00:02:50,170 --> 00:02:50,690 Αυτό είναι απλό. 46 00:02:50,690 --> 00:02:52,770 Αν είναι 1, τότε θα θέλετε να προσθέσετε 2. 47 00:02:52,770 --> 00:02:54,090 Αν είναι 2, θέλουμε να προσθέσουμε 4. 48 00:02:54,090 --> 00:02:55,530 Αν είναι 4, θέλουμε να προσθέσουμε 8. 49 00:02:55,530 --> 00:02:57,400 >> Έτσι τι είναι ιδιαίτερο για 5; 50 00:02:57,400 --> 00:03:00,290 Λοιπόν, 5 φορές 2 είναι 10. 51 00:03:00,290 --> 00:03:05,920 Και να θυμάστε από το spec το chipset που θέλουμε να προσθέσουμε τα ψηφία του 52 00:03:05,920 --> 00:03:09,300 φορές τον αριθμό 2, και όχι η φορές τον αριθμό 2 η ίδια. 53 00:03:09,300 --> 00:03:13,920 Έτσι, εάν ο αρχικός αριθμός είναι 7, 7 φορές 2 είναι 14. 54 00:03:13,920 --> 00:03:18,930 Θέλουμε να προσθέσετε 1 συν 4 με τον αριθμό, όχι 14. 55 00:03:18,930 --> 00:03:24,050 >> Τόσο εδώ, αν ο αριθμός είναι 5 ή μεγαλύτερο, αυτό που κάνουμε είναι τρέχουσα ψηφίο 56 00:03:24,050 --> 00:03:26,470 2 φορές μείον 9. 57 00:03:26,470 --> 00:03:29,940 Και αν νομίζετε γι 'αυτό, 5 φορές 2 είναι 10. 58 00:03:29,940 --> 00:03:33,130 Και έτσι είμαστε προσθέτοντας 1, η οποία είναι 10 μείον 9. 59 00:03:33,130 --> 00:03:35,490 Και 6 φορές 2 είναι 12. 60 00:03:35,490 --> 00:03:38,380 Έτσι είμαστε προσθήκη 3, η οποία είναι 12 μείον 9. 61 00:03:38,380 --> 00:03:40,250 Και αυτό λειτουργεί για όλους τους αριθμούς. 62 00:03:40,250 --> 00:03:43,330 >> Οπότε αυτό είναι που είμαστε προσθήκη στο άθροισμα ελέγχου μας. 63 00:03:43,330 --> 00:03:49,970 Και αυτό το άλλο είναι το τι χειρισμοί Βήμα Δύο αλγόριθμο Luhn, η οποία είναι μόλις 64 00:03:49,970 --> 00:03:55,010 προσθέτοντας το ψηφίο, εάν δεν συμβεί να είναι ένα από τα κάθε άλλη ψηφία. 65 00:03:55,010 --> 00:04:01,440 Έτσι, τη στιγμή που έχουμε αυτό, αυτό είναι η διατήρηση μετατρόχιο των δύο πρώτοι χαρακτήρες του 66 00:04:01,440 --> 00:04:05,220 ο αριθμός της πιστωτικής κάρτας, τα δύο πρώτα ψηφία, δεδομένου ότι είμαστε τελικά θα 67 00:04:05,220 --> 00:04:08,980 να θέλετε να χρησιμοποιήσετε το κάτω εδώ για να επιβεβαιώσετε, Εντάξει, μια Visa πρέπει να αρχίσει 68 00:04:08,980 --> 00:04:14,440 με αυτό, και απαιτείται από μια American Express για να ξεκινήσει με αυτό, και ούτω καθεξής. 69 00:04:14,440 --> 00:04:16,850 >> Τέλος, κάνουμε τις πιστωτικές κάρτες αριθμός ισούται με πιστωτική κάρτα 70 00:04:16,850 --> 00:04:18,730 αριθμός διαιρείται με 10. 71 00:04:18,730 --> 00:04:19,829 Γιατί το κάνουμε αυτό; 72 00:04:19,829 --> 00:04:22,070 Λοιπόν, διαχειριστήκαμε μόνο το τελευταίο ψηφίο. 73 00:04:22,070 --> 00:04:24,880 Διαιρώντας με 10 θα μετατοπιστεί ολόκληρος ο αριθμός πάνω. 74 00:04:24,880 --> 00:04:27,150 Μέχρι τώρα, όταν θα στραφεί προς τα πίσω, είμαστε πρόκειται να χειρίζεται το 75 00:04:27,150 --> 00:04:28,540 το δεύτερο στο τελευταίο ψηφίο. 76 00:04:28,540 --> 00:04:31,060 Στη συνέχεια, όταν θα χτυπήσει και πάλι, θα πάμε να κόψει το δεύτερο για να διαρκέσει 77 00:04:31,060 --> 00:04:35,060 ψηφίο, πίσω βρόχο, και να χειριστεί το τρίτο να τελευταίο ψηφίο, και ούτω καθεξής, έως ότου η 78 00:04:35,060 --> 00:04:40,120 αριθμός τους ανέρχεται σε 0, σε ποιο σημείο έχουμε ξεφύγει από τον βρόχο while. 79 00:04:40,120 --> 00:04:43,560 >> Είμαστε, επίσης, την παρακολούθηση του πιστωτικού Μήκος τον αριθμό της κάρτας, δεδομένου ότι αυτό είναι 80 00:04:43,560 --> 00:04:48,440 σημαντικό να γίνει διάκριση αν είναι ένα έγκυρο αριθμό πιστωτικής κάρτας. 81 00:04:48,440 --> 00:04:53,560 Έτσι τώρα, αφού έχουμε υπολογίζεται η αθροίσματος ελέγχου, μπορούμε να καθορίσουμε αν 82 00:04:53,560 --> 00:04:55,180 είναι μια έγκυρη κάρτα. 83 00:04:55,180 --> 00:04:58,010 Η mod checksum 10 αποτελεί μέρος του αλγορίθμου Luhn του. 84 00:04:58,010 --> 00:05:03,360 Αν αθροίσματος mod 10 επιστρέφει κάτι μη μηδενική, τότε αυτό θα επιστρέψει αλήθεια, 85 00:05:03,360 --> 00:05:06,650 στην οποία περίπτωση, ο αριθμός πρέπει να είναι άκυρη. 86 00:05:06,650 --> 00:05:12,590 >> Διαφορετικά, αν αθροίσματος ελέγχου mod 10 είναι 0, τότε μπορούμε να συνεχίσουμε. 87 00:05:12,590 --> 00:05:18,360 Αυτό το μεγάλο Αλλιώς αν λέει, αν η πρώτη δύο ψηφία είναι ίσα με 1 AMEX, 88 00:05:18,360 --> 00:05:23,640 όπου μέχρι εδώ, βλέπουμε ότι AMEX 1, σύμφωνα με την προδιαγραφή, είναι 34. 89 00:05:23,640 --> 00:05:26,595 Και επίσης θα πρέπει να συγκρίνετε προς AMEX 2, η οποία είναι 37. 90 00:05:26,595 --> 00:05:30,360 91 00:05:30,360 --> 00:05:34,210 Και η πιστωτική κάρτα μήκος αριθμού είναι ισούται με την αναμενόμενη American Express 92 00:05:34,210 --> 00:05:37,910 το μήκος της κάρτας, τότε μπορούμε να εκτύπωση American Express. 93 00:05:37,910 --> 00:05:41,920 >> Θα κάνουμε ένα παρόμοιο πράγμα με τη Visa. 94 00:05:41,920 --> 00:05:51,940 Τα δύο πρώτα ψηφία χρειάζεται να είναι μεγαλύτερη από ή ίση με 40, ή λιγότερο 95 00:05:51,940 --> 00:05:54,290 από ή ίση με 49. 96 00:05:54,290 --> 00:05:57,180 Αυτοί αντιπροσωπεύουν τις έγκυρες κάρτες Visa. 97 00:05:57,180 --> 00:06:01,530 Και το μήκος πρέπει να είναι ίση προς Visa Μήκος 1 ή Visa Μήκος 2. 98 00:06:01,530 --> 00:06:07,320 Και έτσι το μήκος πρέπει να είναι είτε Μήκος 13 ή 16 ψηφία. 99 00:06:07,320 --> 00:06:12,240 >> Και, τέλος, με τη MasterCard, είναι παρόμοια με τη Visa, ότι οι δύο πρώτες 100 00:06:12,240 --> 00:06:15,340 ψηφία χρειάζεται να είναι σε μια ορισμένη εύρος και το μήκος πρέπει να 101 00:06:15,340 --> 00:06:19,440 είναι ακριβώς 16 ψηφία. 102 00:06:19,440 --> 00:06:24,390 Έτσι, αν κάποια από αυτές τις περιπτώσεις να κατέχει, στη συνέχεια, η πρώτη περίπτωση, θα εκτυπώσετε AMEX. 103 00:06:24,390 --> 00:06:26,310 Αν η υπόθεση αυτή ισχύει, θα εκτυπώσετε Visa. 104 00:06:26,310 --> 00:06:28,400 Αν η υπόθεση αυτή ισχύει, θα εκτύπωση MasterCard. 105 00:06:28,400 --> 00:06:32,170 >> Αλλά αν κανένας από αυτούς δεν κατέχουν, ακόμη και αν το άθροισμα ελέγχου ήταν έγκυρη, 106 00:06:32,170 --> 00:06:33,900 εξακολουθούμε να εκτυπώσετε άκυρη. 107 00:06:33,900 --> 00:06:37,050 Επειδή δεν είναι ένα από τα αυτά τα είδη των καρτών. 108 00:06:37,050 --> 00:06:40,030 Το όνομά μου είναι Rob, και ελπίζω να βρέθηκαν πιστωτική ενδιαφέρον. 109 00:06:40,030 --> 00:06:46,272