1 00:00:00,000 --> 00:00:13,290 2 00:00:13,290 --> 00:00:14,570 >> ROB BOWDEN: Hallo, ich bin Rob. 3 00:00:14,570 --> 00:00:17,610 Und ich hoffe, Sie sind aufgeladen bis zum Kredit. 4 00:00:17,610 --> 00:00:20,710 Also erste, was wir tun müssen, wird die Kreditkarte beantragen 5 00:00:20,710 --> 00:00:22,710 Nummer von dem Benutzer. 6 00:00:22,710 --> 00:00:25,060 Hier verwenden wir getLongLong. 7 00:00:25,060 --> 00:00:29,070 Sie könnten auch verwendet haben getString, aber In diesem Fall müssten Sie überprüfen 8 00:00:29,070 --> 00:00:32,340 dass es keine nicht-numerischen Zeichen in der Zeichenfolge. 9 00:00:32,340 --> 00:00:34,560 Also werden wir getLongLong verwenden. 10 00:00:34,560 --> 00:00:38,070 >> Denken Sie daran, dass Sie etwas nicht verwenden können wie getInt, da die Zahl sein wird 11 00:00:38,070 --> 00:00:40,650 zu groß, um in einem ganzzahligen passen. 12 00:00:40,650 --> 00:00:44,480 Sobald wir diese Zahl, die wir siehe hier diese while-Schleife. 13 00:00:44,480 --> 00:00:48,210 Also das while-Schleife ist die Umsetzung Luhn-Algorithmus, die Sie 14 00:00:48,210 --> 00:00:50,980 sehen in der pset spec. 15 00:00:50,980 --> 00:00:53,830 >> Und es ist eigentlich los ein bisschen clever. 16 00:00:53,830 --> 00:01:00,800 So in der pset spec, feststellen, dass Die Schritte eins und zwei sind getrennt. 17 00:01:00,800 --> 00:01:05,160 Wir haben zuerst über die gesamte Kreditkarte gehen Nummer, auf der Suche nach jeder anderen 18 00:01:05,160 --> 00:01:09,775 Zeichen ab dem zweiten bis letzte Zeichen, und Multiplikation 19 00:01:09,775 --> 00:01:11,750 und Addieren aller Stellen. 20 00:01:11,750 --> 00:01:16,150 Dann später, fügen wir in alle anderen Stellen. 21 00:01:16,150 --> 00:01:20,660 >> So zu tun, anstatt die in zwei getrennten Schritten werden wir kombinieren 22 00:01:20,660 --> 00:01:24,430 sie in einer Iteration über die gesamte Kreditkartennummer. 23 00:01:24,430 --> 00:01:29,710 Hier sehen wir int aktuellen stellige Gleichheits Kreditkartennummer, mod 10. 24 00:01:29,710 --> 00:01:32,050 Was ist Kreditkartennummer mod 10 zu tun? 25 00:01:32,050 --> 00:01:35,750 Es gibt uns die letzte Ziffer in der ganzen Zahl. 26 00:01:35,750 --> 00:01:39,340 Also denken Sie daran, dass, wenn wir die geteilt Zahl bis um 10, dann der Rest 27 00:01:39,340 --> 00:01:42,180 wäre, was auch immer die letzte Ziffer ist. 28 00:01:42,180 --> 00:01:46,560 23 durch 10 geteilt, die Rest wird 3 sein. 29 00:01:46,560 --> 00:01:53,760 >> Also die letzte Ziffer, bald hier, sehen wir wir sind auf mult Verzweigung durch zwei. 30 00:01:53,760 --> 00:01:57,630 Also, was wir vorhaben, werden mit mult von 2 wird die Unterscheidung zwischen 31 00:01:57,630 --> 00:02:02,110 einer der "alle andere Zahlen aus die zweite Ziffer "Zahlen. 32 00:02:02,110 --> 00:02:08,310 Mult von 2 wird sich als beginnen falsch, da die letzte Stelle sollte nicht 33 00:02:08,310 --> 00:02:11,750 aus der berücksichtigt werden vorletzte Ziffer. 34 00:02:11,750 --> 00:02:16,760 >> So dann am Ende dieser Schleife für wir sehen, dass wir gehen, dies zu ändern 35 00:02:16,760 --> 00:02:18,870 von false auf true. 36 00:02:18,870 --> 00:02:22,520 Bei der nächsten Iteration der for-Schleife, es wird als wahr, bis 37 00:02:22,520 --> 00:02:25,090 das Ende, wenn wir uns verändern es von true auf false. 38 00:02:25,090 --> 00:02:28,290 Denn dann werden wir auf der dritten zu sein letzte Ziffer, die nicht eine der 39 00:02:28,290 --> 00:02:32,210 Ziffern, die wir mit 2 multiplizieren. 40 00:02:32,210 --> 00:02:37,410 >> Wenn wir zufällig auf einer von denen sein, Stellen, die wir mit 2 multiplizieren möchten, 41 00:02:37,410 --> 00:02:40,610 wir sehen, die wir hinzufügen, um unsere Prüfsumme. 42 00:02:40,610 --> 00:02:43,640 Und hier, wir sind mit der ternäre Operator einmal 43 00:02:43,640 --> 00:02:45,470 wieder ein bisschen clever. 44 00:02:45,470 --> 00:02:50,170 So dass, wenn cur Ziffer kleiner als 5 ist, dann können wir nur tun, cur Ziffer 2 mal. 45 00:02:50,170 --> 00:02:50,690 Das ist einfach. 46 00:02:50,690 --> 00:02:52,770 Wenn es 1 ist, dann wollen wir 2 hinzuzufügen. 47 00:02:52,770 --> 00:02:54,090 Wenn es zwei, wir wollen 4 hinzuzufügen. 48 00:02:54,090 --> 00:02:55,530 Wenn es vier, wir wollen 8 hinzuzufügen. 49 00:02:55,530 --> 00:02:57,400 >> Also, was ist das Besondere an 5? 50 00:02:57,400 --> 00:03:00,290 Nun, 5-mal 2 ist 10. 51 00:03:00,290 --> 00:03:05,920 Und von der pset spec daran erinnern, dass wir die Ziffern der hinzugefügt werden soll 52 00:03:05,920 --> 00:03:09,300 Zahl mal 2 und nicht das Nummer 2 mal selber. 53 00:03:09,300 --> 00:03:13,920 So dass, wenn die ursprüngliche Zahl ist 7, 7 mal 2 ist 14. 54 00:03:13,920 --> 00:03:18,930 Wir wollen 1 plus 4 hinzufügen der Anzahl, nicht 14. 55 00:03:18,930 --> 00:03:24,050 >> So dass hier, wenn die Zahl 5 oder größer ist, was wir tun, ist cur stelligen 56 00:03:24,050 --> 00:03:26,470 mal 2 minus 9. 57 00:03:26,470 --> 00:03:29,940 Und wenn Sie darüber nachdenken, 5 mal 2 10 ist. 58 00:03:29,940 --> 00:03:33,130 Und so fügen wir ein, die 10 minus 9 ist. 59 00:03:33,130 --> 00:03:35,490 Und 6 mal 2 ist 12. 60 00:03:35,490 --> 00:03:38,380 So fügen wir 3, die ist 12 minus 9. 61 00:03:38,380 --> 00:03:40,250 Und das funktioniert für alle Zahlen. 62 00:03:40,250 --> 00:03:43,330 >> Also das ist, was wir fügen unsere Prüfsumme. 63 00:03:43,330 --> 00:03:49,970 Und das andere ist, was Handhabung Schritt Zwei der Luhn-Algorithmus, der nur 64 00:03:49,970 --> 00:03:55,010 Addieren Sie die Ziffer, wenn es nicht passiert zu einem der jeweils anderen Ziffern sein. 65 00:03:55,010 --> 00:04:01,440 Also einmal haben wir, dass dies halten Überblick über die ersten zwei Zeichen der 66 00:04:01,440 --> 00:04:05,220 die Kreditkartennummer, die ersten beiden Zahlen, da wir schließlich werde 67 00:04:05,220 --> 00:04:08,980 auf, dass hier unten können Sie überprüfen möchten, alles in Ordnung, hat ein Visa zu beginnen 68 00:04:08,980 --> 00:04:14,440 mit diesem, und eine American Express Bedürfnisse , um mit diesem zu starten, und so weiter. 69 00:04:14,440 --> 00:04:16,850 >> Schließlich tun wir Kreditkarte Anzahl gleich Kreditkarte 70 00:04:16,850 --> 00:04:18,730 Zahl durch 10 geteilt. 71 00:04:18,730 --> 00:04:19,829 Warum tun wir das? 72 00:04:19,829 --> 00:04:22,070 Nun, wir haben nur die letzte Ziffer behandelt. 73 00:04:22,070 --> 00:04:24,880 Die Division durch 10 verschiebt sich die gesamte Reihe über. 74 00:04:24,880 --> 00:04:27,150 So, jetzt, wenn wir Schleife zurück, wir sind sein werden, den Umgang mit dem 75 00:04:27,150 --> 00:04:28,540 vorletzte Ziffer. 76 00:04:28,540 --> 00:04:31,060 Dann, wenn wir dies wieder treffen, werden wir zum Abschalten des vorletzten 77 00:04:31,060 --> 00:04:35,060 Ziffer, Schleife zurück und behandeln die dritte zum letzten Ziffer, und so weiter, bis die 78 00:04:35,060 --> 00:04:40,120 Zahl 0 erreicht, an welcher Stelle wir brechen aus der while-Schleife. 79 00:04:40,120 --> 00:04:43,560 >> Wir sind auch die Verfolgung der Kredit Kartennummer Länge, denn das ist 80 00:04:43,560 --> 00:04:48,440 zu unterscheiden, ob es eine gültige Kreditkartennummer. 81 00:04:48,440 --> 00:04:53,560 So, jetzt haben wir einmal die berechnete Prüfsumme, die wir bestimmen können, ob es 82 00:04:53,560 --> 00:04:55,180 ist eine gültige Karte. 83 00:04:55,180 --> 00:04:58,010 Die Prüfsumme mod 10 Teil von Luhn-Algorithmus. 84 00:04:58,010 --> 00:05:03,360 Wenn Prüfsumme mod 10 kehrt etwas nicht Null ist, dann wird dies true zurück, 85 00:05:03,360 --> 00:05:06,650 in welchem ​​Fall die Anzahl muss ungültig sein. 86 00:05:06,650 --> 00:05:12,590 >> Andernfalls, wenn Prüfsumme mod 10 0 ist, dann können wir weiter. 87 00:05:12,590 --> 00:05:18,360 Diese große else if sagt, wenn der erste beiden Ziffern sind gleich AMEX 1, 88 00:05:18,360 --> 00:05:23,640 wo hier oben, sehen wir, dass AMEX 1, nach der Spezifikation ist 34. 89 00:05:23,640 --> 00:05:26,595 Und wir werden es auch vergleichen um AMEX 2, 37. 90 00:05:26,595 --> 00:05:30,360 91 00:05:30,360 --> 00:05:34,210 Und die Kreditkartennummer Länge gleich der erwarteten American Express 92 00:05:34,210 --> 00:05:37,910 Kartenlänge, dann können wir drucken American Express. 93 00:05:37,910 --> 00:05:41,920 >> Wir werden eine ähnliche Sache mit Visa zu tun. 94 00:05:41,920 --> 00:05:51,940 Die ersten beiden Ziffern müssen größer sein, als oder gleich 40 oder weniger 95 00:05:51,940 --> 00:05:54,290 als oder gleich 49. 96 00:05:54,290 --> 00:05:57,180 Diejenigen darstellen gültigen Visa-Karten. 97 00:05:57,180 --> 00:06:01,530 Und die Länge muss gleich sein Visa Länge 1 oder Länge 2 Visa. 98 00:06:01,530 --> 00:06:07,320 Und so ist die Länge muss entweder 13 oder 16 Stellen lang. 99 00:06:07,320 --> 00:06:12,240 >> Und schließlich mit Master, ist es ähnlich wie Visa, dass die ersten beiden 100 00:06:12,240 --> 00:06:15,340 Ziffern müssen in eine bestimmte sein Bereich und die Länge muss 101 00:06:15,340 --> 00:06:19,440 genau 16 Stellen. 102 00:06:19,440 --> 00:06:24,390 Also, wenn einer dieser Fälle halten, und dann in der erste Fall, wir AMEX drucken. 103 00:06:24,390 --> 00:06:26,310 Wenn dieser Fall zutrifft, werden wir Visa drucken. 104 00:06:26,310 --> 00:06:28,400 Wenn dieser Fall zutrifft, werden wir drucken Mastercard. 105 00:06:28,400 --> 00:06:32,170 >> Aber wenn keiner von denen zu halten, auch wenn die Prüfsumme gültig war, 106 00:06:32,170 --> 00:06:33,900 wir immer noch ungültig zu drucken. 107 00:06:33,900 --> 00:06:37,050 Denn es ist nicht einer von diese Arten von Karten. 108 00:06:37,050 --> 00:06:40,030 Mein Name ist Rob, und ich hoffe, dass Sie gefunden Kredit interessant. 109 00:06:40,030 --> 00:06:46,272