>> ROB BOWDEN: Ahoj, ja som Rob.
A ja dúfam, že ste obvinený pre úver.
Takže prvá vec, ktorú musíme urobiť, je požiadať o kreditnú kartu
Číslo od užívateľa.
Tu sme pomocou getLongLong.
Dalo by sa tiež použiť getString, ale v tomto prípade si musíte skontrolovať
že to tam bolo žiadny non-numeric znaky v reťazci.
Takže budeme používať getLongLong.
>> Uvedomte si, že nemôžete použiť niečo ako vezmi_int, pretože počet bude
príliš veľké, aby sa zmestili na celé číslo.
Akonáhle budeme mať toto číslo, my pozri tu while.
Takže tento cyklus while sa vykonáva Luhn algoritmus, ktorý
pozri v pset spec.
>> A je to vlastne deje byť trochu šikovný.
Takže v pset spec, všimnite si, že Kroky jedna a dve sú oddelené.
Prvýkrát sme sa ísť po celom kreditnej karty číslo, hľadá každý druhý
charakter od druhého do posledný znak, a ich znásobenie
a súčet všetkých číslic.
Potom po tom, pridáme do všetky ostatné číslice.
>> Takže namiesto toho, aby robil tie dva samostatné kroky, budeme kombinovať
je do jednej iterácii cez Celé číslo kreditnej karty.
Tu vidíme, int prúdoch číslica rovná číslo kreditnej karty, mod 10.
Čo je číslo kreditnej karty mod 10 robí?
Je nám dáva poslednú číslicu v celej rade.
Takže pamätajte, že keď sme sa rozdelili číslo až o 10, potom zvyšok
by čokoľvek, aby posledná číslica je.
23 delené 10, Zvyšok bude 3.
>> Takže posledná číslica, teraz tu vidíme, sme vetvenia na rozmnožovacie o 2.
Takže to, čo budeme používať Mult o 2 pre je rozlišovať medzi
jeden z "každých ďalších čísel z druhá číslica "čísla.
Mult o 2 sa chystá začať ako false, pretože posledná číslica nemal
považovať z Druhý na poslednú číslicu.
>> Takže na konci tejto pre sláčiky, sme vidieť, že ak budeme to zmeniť
z false na true.
Na ďalšej iterácii pre sláčiky, bude to považovať za pravdivé, kým
koniec, keď zmeníme že z true na false.
Pretože potom budeme na treťom až posledná číslica, ktorá nie je jedným z
číslice, že by sme mali vynásobiť 2.
>> Takže ak sa stalo, že sa na jeden z tých číslice, ktoré chceme vynásobiť 2,
vidíme my pridania do nášho kontrolného súčtu.
A tu, sme pomocou ternárnu operátor raz
opäť trochu šikovný.
Takže ak teraz číslica menšia ako 5, potom môžeme len robiť prúdoch číslice krát 2.
To je jednoduché.
Ak je to 1, potom chceme pridať 2.
Ak je to 2, chceme pridať 4.
Ak je to 4, chceme pridať 8.
>> Takže to, čo je zvláštne na 5?
No, 5 krát 2 je 10..
A pamätajte si, ze pset spec, že chceme pridať číslice
počet krát 2, a nie počet časy 2. sám.
Takže v prípade, že pôvodné číslo je 7, 7 krát 2 je 14..
Chceme pridať 1 plus 4 počtu, nie 14.
>> Takže tu, v prípade, že je číslo 5 alebo vyššie, to, čo robíme, je teraz číslica
krát 2 mínus 9.
A ak si myslíte, že o tom, 5 krát 2 je 10.
A tak sme pridaním 1, čo je o 10 mínus 9.
A 6 krát 2 je 12.
Takže budeme pridávať 3, ktoré je 12 mínus 9.
A to funguje u všetkých čísel.
>> Takže to je to, čo sme pridaním na našom kontrolným súčtom.
A to je ešte to, čo je manipulácia krok Dva Luhn algoritmu, ktorý je práve
pridaním číslice, ak sa tak nestane byť jeden z každej ďalšej číslice.
Takže akonáhle sme sa, že to je udržať track z prvých dvoch znakov
číslo kreditnej karty, prvé dva číslice, pretože sme nakoniec bude
chcieť používať, ktoré sa tu overiť, v poriadku, Visa musia začať
s to, a potreby American Express začať s tým, a tak ďalej.
>> Nakoniec, my kreditnej karty číslo sa rovná kreditnej karty
číslo delené 10.
Prečo to robíme?
No, práve sme sa ovládal poslednú číslicu.
Rozdelenie podľa 10 posunie Celé číslo znova.
Takže teraz, keď sme sa slučka späť, sme bude manipulácia
Druhý na poslednú číslicu.
Potom, keď sme hit to znova, ideme odrezať druhý trvať
číslice, slučka späť, a zvládnuť tretí poslednej číslice, a tak ďalej, až kým sa
číslo dosiahne 0, na ktorom mieste sme sa vymaniť z cyklu while.
>> Sme tiež sledovanie úveru dĺžka číslo karty, pretože to je
dôležité rozlišovať, či je to číslo platnej kreditnej karty.
Takže teraz, raz sme sa vypočíta kontrolný súčet, môžeme určiť, či
je platnou kartou.
Kontrolný súčet mod 10 je súčasťou z Luhn algoritmu.
Ak kontrolný súčet mod 10 vráti niečo nenulové, potom sa to vráti hodnotu true,
v takom prípade sa počet Musí byť neplatné.
>> V opačnom prípade, ak je kontrolný súčet mod 10 je 0, potom môžeme pokračovať.
Tento veľký else if hovorí, keď je prvý dve číslice sú rovné AMEX 1,
kde tu vidíme, že AMEX 1, podľa spec, je 34 rokov.
A budeme tiež porovnávať na AMEX 2, čo je 37.
A dĺžka číslo kreditnej karty, je rovnajúcu sa očakávané American Express
Dĺžka karty, potom môžeme vytlačiť American Express.
>> Budeme robiť podobnú vec s Visa.
Prvé dve číslice musia byť väčšie ako alebo rovná 40 ° C, alebo menej
ako alebo rovnajúcu sa 49.
Tí predstavujú platné karty Visa.
A dĺžka musí byť rovný Visa Dĺžka 1 alebo Visa dĺžka 2.
A tak sa dĺžka musí byť buď 13 alebo 16 číslic.
>> A konečne s MasterCard, je to podobne ako Visa, že prvé dva
číslice musia byť v určitej Rozsah a dĺžka musí
byť presne 16 číslic.
Takže ak niektorý z týchto prípadov držať, potom V prvom prípade budeme tlačiť AMEX.
Pokiaľ tento prípad platí, budeme tlačiť Visa.
Pokiaľ tento prípad platí, budeme vytlačiť MasterCard.
>> Ale ak žiadny z nich drží, aj v prípade, že kontrolný súčet bol platný,
stále tlačiť neplatné.
Vzhľadom k tomu, že to nie je jeden z tieto typy kariet.
Volám sa Rob a ja dúfam, že vás nájdených kreditnej zaujímavé.