>> ROB BOWDEN: Ahoj, já jsem Rob.
A já doufám, že jste obviněn pro úvěr.
Takže první věc, kterou musíme udělat, je požádat o kreditní kartu
Číslo od uživatele.
Zde jsme pomocí getLongLong.
Dalo by se také použít getString, ale v tomto případě si musíte zkontrolovat
že to tam bylo žádný non-numeric znaky v řetězci.
Takže budeme používat getLongLong.
>> Uvědomte si, že nemůžete použít něco jako vezmi_int, protože počet bude
příliš velké, aby se vešly na celé číslo.
Jakmile budeme mít toto číslo, my viz zde while.
Takže tento cyklus while se provádí Luhn algoritmus, který
viz v pset spec.
>> A je to vlastně děje být trochu chytrý.
Takže v pset spec, všimněte si, že Kroky jedna a dvě jsou oddělené.
Poprvé jsme se jít po celém kreditní karty číslo, hledá každý druhý
charakter od druhého do poslední znak, a jejich znásobení
a součet všech číslic.
Pak po tom, přidáme do všechny ostatní číslice.
>> Takže místo toho, aby dělal ty dva samostatné kroky, budeme kombinovat
je do jedné iteraci přes Celé číslo kreditní karty.
Zde vidíme, int proudech číslice rovná číslo kreditní karty, mod 10.
Co je číslo kreditní karty mod 10 dělá?
Je nám dává poslední číslici v celé řadě.
Takže pamatujte, že když jsme se rozdělili číslo až o 10, pak zbytek
by cokoliv, aby poslední číslice je.
23 děleno 10, Zbytek bude 3.
>> Takže poslední číslice, teď tady vidíme, jsme větvení na rozmnožovací o 2.
Takže to, co budeme používat Mult o 2 pro je rozlišovat mezi
jeden z "každých dalších čísel z druhá číslice "čísla.
Mult o 2 se chystá začít jako false, protože poslední číslice neměl
považovat z Druhý na poslední číslici.
>> Takže na konci této pro smyčce, jsme vidět, že budeme-li to změnit
z false na true.
Na další iteraci pro smyčce, bude to považovat za pravdivé, dokud
konec, když změníme že z true na false.
Protože pak budeme na třetím až poslední číslice, která není jedním z
číslice, že bychom měli vynásobit 2.
>> Takže pokud se stalo, že se na jeden z těch číslice, které chceme vynásobit 2,
vidíme my přidání do našeho kontrolního součtu.
A tady, jsme pomocí ternární operátor jednou
opět trochu chytrý.
Takže pokud teď číslice menší než 5, pak můžeme jen dělat proudech číslice krát 2.
To je jednoduché.
Pokud je to 1, pak chceme přidat 2.
Pokud je to 2, chceme přidat 4.
Pokud je to 4, chceme přidat 8.
>> Takže to, co je zvláštního na 5?
No, 5 krát 2 je 10..
A pamatujte si, ze pset spec, že chceme přidat číslice
počet krát 2, a nikoli počet časy 2. sám.
Takže v případě, že původní číslo je 7, 7 krát 2 je 14..
Chceme přidat 1 plus 4 počtu, ne 14.
>> Takže zde, v případě, že je číslo 5 nebo vyšší, to, co děláme, je teď číslice
krát 2 minus 9.
A pokud si myslíte, že o tom, 5 krát 2 je 10.
A tak jsme přidáním 1, což je o 10 minus 9.
A 6 krát 2 je 12.
Takže budeme přidávat 3, které je 12 minus 9.
A to funguje u všech čísel.
>> Takže to je to, co jsme přidáním na našem kontrolním součtem.
A to je ještě to, co je manipulace krok Dva Luhn algoritmu, který je právě
přidáním číslice, pokud se tak nestane být jeden z každé další číslice.
Takže jakmile jsme se, že to je udržet track z prvních dvou znaků
číslo kreditní karty, první dva číslice, protože jsme nakonec bude
chtít používat, které se zde ověřit, v pořádku, Visa musí začít
s to, a potřeby American Express začít s tím, a tak dále.
>> Nakonec, my kreditní karty číslo se rovná kreditní karty
číslo děleno 10.
Proč to děláme?
No, právě jsme se ovládal poslední číslici.
Rozdělení podle 10 posune Celé číslo znovu.
Takže teď, když jsme se smyčka zpět, jsme bude manipulace
Druhý na poslední číslici.
Pak, když jsme hit to znovu, jedeme uříznout druhý trvat
číslice, smyčka zpět, a zvládnout třetí poslední číslice, a tak dále, dokud se
číslo dosáhne 0, na kterém místě jsme se vymanit z cyklu while.
>> Jsme také sledování úvěru délka číslo karty, protože to je
důležité rozlišovat, zda je to číslo platné kreditní karty.
Takže teď, jednou jsme se vypočítá kontrolní součet, můžeme určit, zda
je platnou kartou.
Kontrolní součet mod 10 je součástí z Luhn algoritmu.
Pokud kontrolní součet mod 10 vrátí něco nenulová, pak se to vrátí hodnotu true,
v takovém případě se počet Musí být neplatné.
>> V opačném případě, je-li kontrolní součet mod 10 je 0, pak můžeme pokračovat.
Tento velký else if říká, je-li první dvě číslice jsou rovny AMEX 1,
kde tady vidíme, že AMEX 1, podle spec, je 34 let.
A budeme také srovnávat na AMEX 2, což je 37.
A délka číslo kreditní karty, je rovnající se očekávané American Express
Délka karty, pak můžeme vytisknout American Express.
>> Budeme dělat podobnou věc s Visa.
První dvě číslice musí být větší než nebo rovna 40 ° C, nebo méně
než nebo rovnající se 49.
Ti představují platné karty Visa.
A délka musí být roven Visa Délka 1 nebo Visa délka 2.
A tak se délka musí být buď 13 nebo 16 číslic.
>> A konečně s MasterCard, je to podobně jako Visa, že první dva
číslice musí být v určité Rozsah a délka musí
být přesně 16 číslic.
Takže pokud některý z těchto případů držet, pak V prvním případě budeme tisknout AMEX.
Pokud tento případ platí, budeme tisknout Visa.
Pokud tento případ platí, budeme vytisknout MasterCard.
>> Ale pokud žádný z nich drží, i v případě, že kontrolní součet byl platný,
stále tisknout neplatné.
Vzhledem k tomu, že to není jeden z tyto typy karet.
Jmenuji se Rob a já doufám, že vás nalezeno kreditní zajímavé.