>> ROB BOWDEN: Cześć, jestem Rob.
I mam nadzieję, że jesteś naładowany się o kredyt.
Tak więc pierwszą rzeczą, którą musisz zrobić, jest zwrócić się o kartę kredytową
liczba od użytkownika.
Tutaj używamy getLongLong.
Można również stosować GetString, ale w tym przypadku, to trzeba sprawdzić
że nie było nie-numerycznych znaków w ciągu.
Więc użyjemy getLongLong.
>> Pamiętaj, że nie możesz użyć czegoś jak getInt, ponieważ liczba będzie
zbyt duży, aby zmieścić się w postaci liczby całkowitej.
Kiedy już mamy tę liczbę, możemy zobacz tutaj ta pętla.
Więc ta pętla jest wdrożenie Algorytm Luhn, że jesteś
zobacz w specyfikacji pset.
>> I to rzeczywiście będzie być nieco mądry.
Tak w specyfikacji pset zauważyć, że Jeden i Dwa kroki są odrębne.
Najpierw przejdź na całej karcie kredytowej Numer, patrząc na każde inne
charakter, począwszy od drugiego do ostatni znak, a ich pomnożenie
i dodanie wszystkich cyfr.
Następnie po tym, dodajemy wszystkie pozostałe cyfry.
>> Więc zamiast robić te w dwóch oddzielne etapy, będziemy łączyć
je w jednej iteracji na Cały numer karty kredytowej.
Tutaj widzimy prą cyfr równych int numer karty kredytowej, mod 10.
Co to jest numer karty kredytowej mod 10 robi?
To daje nam ostatnią cyfrę do liczby całkowitej.
Więc pamiętaj, że jeśli podzielić numeruje się od 10, a pozostała
byłoby cokolwiek to ostatnia cyfra jest.
23 podzielono przez 10, Reszta będzie 3.
>> Tak więc ostatnia cyfra, teraz tutaj, widzimy mamy rozgałęzienia na mult przez 2.
Więc co mamy zamiar używać MULT przez 2 do jest różnicowanie
jednym z numerów "każdy z innych Druga cyfra "numery.
Mult przez 2 zaczynać się od fałszywe, od ostatniej cyfry nie powinny
należy rozpatrywać drugi do ostatniej cyfry.
>> A więc na końcu tej pętli for my zobaczyć, że mamy zamiar to zmienić
z false na true.
Na następnej iteracji pętli for, to będzie uznane za prawdziwe, dopóki
koniec, kiedy zmienić to z true na false.
Bo wtedy będziemy na trzecim ostatniej cyfry, który nie jest jednym z
cyfr, które należy pomnożyć przez 2.
>> Jeśli więc zdarzy się na jednym z tych, cyfry, które chcemy pomnożyć przez 2,
widzimy, dodajemy do naszej sumy kontrolnej.
I tu, używamy operatora trójskładnikowych raz
znowu nieco mądry.
Tak więc, jeśli cyfra bajtów jest mniejsza niż 5, a następnie możemy po prostu zrobić prą razy cyfra 2.
To jest proste.
Jeśli jest to 1, a następnie chcemy dodać 2.
Jeśli jest to 2, chcemy dodać 4.
Jeśli jest to 4, chcemy dodać 8.
>> Tak więc to, co jest specjalnego w 5?
Cóż, 5 razy 2 jest 10.
I pamiętaj, ze spec pset że chcemy dodać cyfry
razy liczba 2, a nie Numer 2 razy sam.
Więc jeśli oryginalny numer jest 7, 7 razy 2 jest 14.
Chcemy dodać 1 plus 4 w ilości nie 14.
>> Więc, jeśli liczba wynosi 5 lub więcej, to, co robimy jest bież cyfrowy
razy 2 minus 9.
A jeśli myślisz o tym, 5 razy 2 jest 10.
A więc dodajemy 1, co 10 minus 9.
I 6 razy 2 jest 12.
Więc dodajemy 3, które jest 12 minus 9.
I to działa dla wszystkich numerów.
>> Więc to, co dodajemy do naszej sumy kontrolnej.
I to, co jeszcze jest obsługa Krok Dwa z algorytmu Luhn, który jest po prostu
dodając cyfrę, jeśli to się nie zdarza jest jednym z każdych innych znaków.
Więc raz mamy, że to jest utrzymanie utwór z dwóch pierwszych znaków
numer karty kredytowej, pierwsze dwa cyfr, ponieważ jesteśmy w końcu dzieje
chce użyć, że tutaj, aby sprawdzić, Wszystko w porządku, wiza musi zacząć
z tym, a także potrzeby American Express rozpocząć z tym i tak dalej.
>> Wreszcie, mamy karty kredytowej Numer karty kredytowej jest równa
liczba dzieli się przez 10..
Dlaczego to robimy?
Cóż, po prostu obchodzić ostatnią cyfrę.
Dzieląc przez 10 przesunie Cały numer nad.
Więc teraz, gdy pętla z powrotem, jesteśmy będzie przenoszenia
drugi do ostatniej cyfry.
Potem, gdy trafiliśmy to znowu idziemy odciąć przedostatnia
cyfrowy, z powrotem w pętli i obsłużyć trzeci do ostatniej pozycji, i tak dalej, aż
liczba osiągnie 0, w którym miejscu możemy wyrwać się z pętli while.
>> Jesteśmy również śledzenie kredytu długość numeru karty, ponieważ jest to
ważne, aby odróżnić, czy jest to numer ważnej karty kredytowej.
Więc teraz, kiedy już obliczone suma kontrolna, można określić, czy
jest ważna karta.
Suma kontrolna mod 10 jest częścią algorytmu Luhn za.
Jeśli suma kontrolna mod 10 powraca coś niezerowe, to zwróci true,
W takim przypadku, ilość musi być nieważne.
>> W przeciwnym razie, jeśli kontrolna mod 10 jest 0, to możemy kontynuować.
Ten duży if mówi, jeśli pierwszy dwie cyfry są równe AMEX 1,
gdzie tu widzimy, że AMEX 1, jak na specyfikacji, jest 34.
I my również porównać ją do AMEX 2, który ma 37.
I numer karty kredytowej jest długość równa oczekiwanej American Express
Długość karty, to możemy wydrukować American Express.
>> Zrobimy coś podobnego z Visa.
Dwie pierwsze cyfry musi być większa niż lub równy 40, a mniej
niż lub równa 49.
Te stanowią ważne karty Visa.
I długość musi być równa Visa lub Visa długość 1 długość 2.
A więc długość musi być 13 lub 16 cyfr.
>> I wreszcie z MasterCard, to Podobny Visa, że ​​dwa pierwsze
cyfry muszą być w pewien Zakres i długość musi
być dokładnie 16 cyfr.
Jeśli więc któryś z tych przypadków, przytrzymaj, a następnie w Pierwszy przypadek, będziemy drukować AMEX.
Jeśli ta sprawa posiada będziemy drukować Visa.
Jeśli ta sprawa posiada, będziemy wydrukować MasterCard.
>> Ale jeśli nikt z tych, trzymać, nawet jeśli suma kontrolna była ważna,
nadal drukować nieważne.
Bo to nie jest jeden z te rodzaje kart.
Nazywam się Rob, i mam nadzieję, że znaleźć interesujące kredytowej.