1 00:00:00,000 --> 00:00:13,290 2 00:00:13,290 --> 00:00:14,570 >> ROB BOWDEN: Cześć, jestem Rob. 3 00:00:14,570 --> 00:00:17,610 I mam nadzieję, że jesteś naładowany się o kredyt. 4 00:00:17,610 --> 00:00:20,710 Tak więc pierwszą rzeczą, którą musisz zrobić, jest zwrócić się o kartę kredytową 5 00:00:20,710 --> 00:00:22,710 liczba od użytkownika. 6 00:00:22,710 --> 00:00:25,060 Tutaj używamy getLongLong. 7 00:00:25,060 --> 00:00:29,070 Można również stosować GetString, ale w tym przypadku, to trzeba sprawdzić 8 00:00:29,070 --> 00:00:32,340 że nie było nie-numerycznych znaków w ciągu. 9 00:00:32,340 --> 00:00:34,560 Więc użyjemy getLongLong. 10 00:00:34,560 --> 00:00:38,070 >> Pamiętaj, że nie możesz użyć czegoś jak getInt, ponieważ liczba będzie 11 00:00:38,070 --> 00:00:40,650 zbyt duży, aby zmieścić się w postaci liczby całkowitej. 12 00:00:40,650 --> 00:00:44,480 Kiedy już mamy tę liczbę, możemy zobacz tutaj ta pętla. 13 00:00:44,480 --> 00:00:48,210 Więc ta pętla jest wdrożenie Algorytm Luhn, że jesteś 14 00:00:48,210 --> 00:00:50,980 zobacz w specyfikacji pset. 15 00:00:50,980 --> 00:00:53,830 >> I to rzeczywiście będzie być nieco mądry. 16 00:00:53,830 --> 00:01:00,800 Tak w specyfikacji pset zauważyć, że Jeden i Dwa kroki są odrębne. 17 00:01:00,800 --> 00:01:05,160 Najpierw przejdź na całej karcie kredytowej Numer, patrząc na każde inne 18 00:01:05,160 --> 00:01:09,775 charakter, począwszy od drugiego do ostatni znak, a ich pomnożenie 19 00:01:09,775 --> 00:01:11,750 i dodanie wszystkich cyfr. 20 00:01:11,750 --> 00:01:16,150 Następnie po tym, dodajemy wszystkie pozostałe cyfry. 21 00:01:16,150 --> 00:01:20,660 >> Więc zamiast robić te w dwóch oddzielne etapy, będziemy łączyć 22 00:01:20,660 --> 00:01:24,430 je w jednej iteracji na Cały numer karty kredytowej. 23 00:01:24,430 --> 00:01:29,710 Tutaj widzimy prą cyfr równych int numer karty kredytowej, mod 10. 24 00:01:29,710 --> 00:01:32,050 Co to jest numer karty kredytowej mod 10 robi? 25 00:01:32,050 --> 00:01:35,750 To daje nam ostatnią cyfrę do liczby całkowitej. 26 00:01:35,750 --> 00:01:39,340 Więc pamiętaj, że jeśli podzielić numeruje się od 10, a pozostała 27 00:01:39,340 --> 00:01:42,180 byłoby cokolwiek to ostatnia cyfra jest. 28 00:01:42,180 --> 00:01:46,560 23 podzielono przez 10, Reszta będzie 3. 29 00:01:46,560 --> 00:01:53,760 >> Tak więc ostatnia cyfra, teraz tutaj, widzimy mamy rozgałęzienia na mult przez 2. 30 00:01:53,760 --> 00:01:57,630 Więc co mamy zamiar używać MULT przez 2 do jest różnicowanie 31 00:01:57,630 --> 00:02:02,110 jednym z numerów "każdy z innych Druga cyfra "numery. 32 00:02:02,110 --> 00:02:08,310 Mult przez 2 zaczynać się od fałszywe, od ostatniej cyfry nie powinny 33 00:02:08,310 --> 00:02:11,750 należy rozpatrywać drugi do ostatniej cyfry. 34 00:02:11,750 --> 00:02:16,760 >> A więc na końcu tej pętli for my zobaczyć, że mamy zamiar to zmienić 35 00:02:16,760 --> 00:02:18,870 z false na true. 36 00:02:18,870 --> 00:02:22,520 Na następnej iteracji pętli for, to będzie uznane za prawdziwe, dopóki 37 00:02:22,520 --> 00:02:25,090 koniec, kiedy zmienić to z true na false. 38 00:02:25,090 --> 00:02:28,290 Bo wtedy będziemy na trzecim ostatniej cyfry, który nie jest jednym z 39 00:02:28,290 --> 00:02:32,210 cyfr, które należy pomnożyć przez 2. 40 00:02:32,210 --> 00:02:37,410 >> Jeśli więc zdarzy się na jednym z tych, cyfry, które chcemy pomnożyć przez 2, 41 00:02:37,410 --> 00:02:40,610 widzimy, dodajemy do naszej sumy kontrolnej. 42 00:02:40,610 --> 00:02:43,640 I tu, używamy operatora trójskładnikowych raz 43 00:02:43,640 --> 00:02:45,470 znowu nieco mądry. 44 00:02:45,470 --> 00:02:50,170 Tak więc, jeśli cyfra bajtów jest mniejsza niż 5, a następnie możemy po prostu zrobić prą razy cyfra 2. 45 00:02:50,170 --> 00:02:50,690 To jest proste. 46 00:02:50,690 --> 00:02:52,770 Jeśli jest to 1, a następnie chcemy dodać 2. 47 00:02:52,770 --> 00:02:54,090 Jeśli jest to 2, chcemy dodać 4. 48 00:02:54,090 --> 00:02:55,530 Jeśli jest to 4, chcemy dodać 8. 49 00:02:55,530 --> 00:02:57,400 >> Tak więc to, co jest specjalnego w 5? 50 00:02:57,400 --> 00:03:00,290 Cóż, 5 razy 2 jest 10. 51 00:03:00,290 --> 00:03:05,920 I pamiętaj, ze spec pset że chcemy dodać cyfry 52 00:03:05,920 --> 00:03:09,300 razy liczba 2, a nie Numer 2 razy sam. 53 00:03:09,300 --> 00:03:13,920 Więc jeśli oryginalny numer jest 7, 7 razy 2 jest 14. 54 00:03:13,920 --> 00:03:18,930 Chcemy dodać 1 plus 4 w ilości nie 14. 55 00:03:18,930 --> 00:03:24,050 >> Więc, jeśli liczba wynosi 5 lub więcej, to, co robimy jest bież cyfrowy 56 00:03:24,050 --> 00:03:26,470 razy 2 minus 9. 57 00:03:26,470 --> 00:03:29,940 A jeśli myślisz o tym, 5 razy 2 jest 10. 58 00:03:29,940 --> 00:03:33,130 A więc dodajemy 1, co 10 minus 9. 59 00:03:33,130 --> 00:03:35,490 I 6 razy 2 jest 12. 60 00:03:35,490 --> 00:03:38,380 Więc dodajemy 3, które jest 12 minus 9. 61 00:03:38,380 --> 00:03:40,250 I to działa dla wszystkich numerów. 62 00:03:40,250 --> 00:03:43,330 >> Więc to, co dodajemy do naszej sumy kontrolnej. 63 00:03:43,330 --> 00:03:49,970 I to, co jeszcze jest obsługa Krok Dwa z algorytmu Luhn, który jest po prostu 64 00:03:49,970 --> 00:03:55,010 dodając cyfrę, jeśli to się nie zdarza jest jednym z każdych innych znaków. 65 00:03:55,010 --> 00:04:01,440 Więc raz mamy, że to jest utrzymanie utwór z dwóch pierwszych znaków 66 00:04:01,440 --> 00:04:05,220 numer karty kredytowej, pierwsze dwa cyfr, ponieważ jesteśmy w końcu dzieje 67 00:04:05,220 --> 00:04:08,980 chce użyć, że tutaj, aby sprawdzić, Wszystko w porządku, wiza musi zacząć 68 00:04:08,980 --> 00:04:14,440 z tym, a także potrzeby American Express rozpocząć z tym i tak dalej. 69 00:04:14,440 --> 00:04:16,850 >> Wreszcie, mamy karty kredytowej Numer karty kredytowej jest równa 70 00:04:16,850 --> 00:04:18,730 liczba dzieli się przez 10.. 71 00:04:18,730 --> 00:04:19,829 Dlaczego to robimy? 72 00:04:19,829 --> 00:04:22,070 Cóż, po prostu obchodzić ostatnią cyfrę. 73 00:04:22,070 --> 00:04:24,880 Dzieląc przez 10 przesunie Cały numer nad. 74 00:04:24,880 --> 00:04:27,150 Więc teraz, gdy pętla z powrotem, jesteśmy będzie przenoszenia 75 00:04:27,150 --> 00:04:28,540 drugi do ostatniej cyfry. 76 00:04:28,540 --> 00:04:31,060 Potem, gdy trafiliśmy to znowu idziemy odciąć przedostatnia 77 00:04:31,060 --> 00:04:35,060 cyfrowy, z powrotem w pętli i obsłużyć trzeci do ostatniej pozycji, i tak dalej, aż 78 00:04:35,060 --> 00:04:40,120 liczba osiągnie 0, w którym miejscu możemy wyrwać się z pętli while. 79 00:04:40,120 --> 00:04:43,560 >> Jesteśmy również śledzenie kredytu długość numeru karty, ponieważ jest to 80 00:04:43,560 --> 00:04:48,440 ważne, aby odróżnić, czy jest to numer ważnej karty kredytowej. 81 00:04:48,440 --> 00:04:53,560 Więc teraz, kiedy już obliczone suma kontrolna, można określić, czy 82 00:04:53,560 --> 00:04:55,180 jest ważna karta. 83 00:04:55,180 --> 00:04:58,010 Suma kontrolna mod 10 jest częścią algorytmu Luhn za. 84 00:04:58,010 --> 00:05:03,360 Jeśli suma kontrolna mod 10 powraca coś niezerowe, to zwróci true, 85 00:05:03,360 --> 00:05:06,650 W takim przypadku, ilość musi być nieważne. 86 00:05:06,650 --> 00:05:12,590 >> W przeciwnym razie, jeśli kontrolna mod 10 jest 0, to możemy kontynuować. 87 00:05:12,590 --> 00:05:18,360 Ten duży if mówi, jeśli pierwszy dwie cyfry są równe AMEX 1, 88 00:05:18,360 --> 00:05:23,640 gdzie tu widzimy, że AMEX 1, jak na specyfikacji, jest 34. 89 00:05:23,640 --> 00:05:26,595 I my również porównać ją do AMEX 2, który ma 37. 90 00:05:26,595 --> 00:05:30,360 91 00:05:30,360 --> 00:05:34,210 I numer karty kredytowej jest długość równa oczekiwanej American Express 92 00:05:34,210 --> 00:05:37,910 Długość karty, to możemy wydrukować American Express. 93 00:05:37,910 --> 00:05:41,920 >> Zrobimy coś podobnego z Visa. 94 00:05:41,920 --> 00:05:51,940 Dwie pierwsze cyfry musi być większa niż lub równy 40, a mniej 95 00:05:51,940 --> 00:05:54,290 niż lub równa 49. 96 00:05:54,290 --> 00:05:57,180 Te stanowią ważne karty Visa. 97 00:05:57,180 --> 00:06:01,530 I długość musi być równa Visa lub Visa długość 1 długość 2. 98 00:06:01,530 --> 00:06:07,320 A więc długość musi być 13 lub 16 cyfr. 99 00:06:07,320 --> 00:06:12,240 >> I wreszcie z MasterCard, to Podobny Visa, że ​​dwa pierwsze 100 00:06:12,240 --> 00:06:15,340 cyfry muszą być w pewien Zakres i długość musi 101 00:06:15,340 --> 00:06:19,440 być dokładnie 16 cyfr. 102 00:06:19,440 --> 00:06:24,390 Jeśli więc któryś z tych przypadków, przytrzymaj, a następnie w Pierwszy przypadek, będziemy drukować AMEX. 103 00:06:24,390 --> 00:06:26,310 Jeśli ta sprawa posiada będziemy drukować Visa. 104 00:06:26,310 --> 00:06:28,400 Jeśli ta sprawa posiada, będziemy wydrukować MasterCard. 105 00:06:28,400 --> 00:06:32,170 >> Ale jeśli nikt z tych, trzymać, nawet jeśli suma kontrolna była ważna, 106 00:06:32,170 --> 00:06:33,900 nadal drukować nieważne. 107 00:06:33,900 --> 00:06:37,050 Bo to nie jest jeden z te rodzaje kart. 108 00:06:37,050 --> 00:06:40,030 Nazywam się Rob, i mam nadzieję, że znaleźć interesujące kredytowej. 109 00:06:40,030 --> 00:06:46,272