ROB BOWDEN: Bună, eu sunt Rob. Și sper că sunteți taxat pentru credit. Deci, primul lucru pe care trebuie să facem se solicita cardul de credit număr de utilizator. Aici, suntem cu ajutorul getLongLong. Ai fi putut fi folosit, de asemenea, getString, dar în acest caz, ai nevoie pentru a verifica că nu au existat non-numeric caractere în șir. Deci, vom folosi getLongLong. Amintiți-vă că nu puteți utiliza ceva ca getint, deoarece numărul va fi prea mare pentru a încăpea într-un întreg. După ce vom avea acest număr, ne-am a se vedea aici buclă în timp. Deci, această buclă în timp ce este de punere în aplicare Algoritmul Luhn care vă a se vedea în spec. PSET. Și se intampla de fapt pentru a fi un pic mai inteligent. Deci, în spec. PSET, observați că Pașii de la unu și doi sunt separate. Mergem în primul rând pe întreaga cardul de credit număr, în căutarea pentru orice alt caracter începând de la al doilea la ultimul caracter, și le-înmulțirea și adăugarea toate cifrele. Apoi, după aceea, vom adăuga în toate celelalte cifre. Deci, în loc de a face pe cei de la doi etape separate, vom combina le într-o singură iterație de-a lungul întregul număr de card de credit. Aici, vom vedea int egali curentii cifre numărul cardului de credit, mod 10. Care este numărul de card de credit Mod 10 faci? Acesta ne dă ultima cifră din numărul total. Deci, amintiți-vă că, dacă ne-am impartit în număr de până la 10, apoi restul ar fi indiferent că ultima cifră este. 23 împărțit la 10, restul va fi 3. Deci ultima cifră, acum aici, vom vedea suntem ramificare pe Mult de 2. Deci, ceea ce am de gând să fie folosind Mult de 2 pentru este diferențierea între una dintre cele mai "la fiecare alte numere de a doua cifre "numere. Mult de 2 este de gând să înceapă ca fals, din moment ce ultima cifră nu ar trebui să fi privite din în al doilea rând pentru ultima cifră. Deci, atunci, la sfârșitul acestei pentru bucla, am vedea că vom schimba acest lucru de la fals la adevărat. Pe urmatoarea iteratie a buclei pentru, se va considera valabil până final, când vom schimba se de la adevărat în fals. Pentru că atunci vom fi pe a treia a ultima cifră, care nu este una a cifre care ar trebui să se înmulțește cu 2. Deci, dacă se întâmplă să fie pe unul dintre cei cifre pe care dorim să le multiplica de 2, vom vedea vom adăuga la nostru de control. Și aici, suntem folosind operatorul ternar la o dată din nou, să fie un pic mai inteligent. Deci, dacă actuală cifră este mai mică de 5, atunci putem face doar ori cifre curentii 2. E simplu. Dacă este 1, apoi ne-am dori să adăugați 2. Dacă este 2, dorim să adăugăm 4. Dacă e 4, dorim să adăugăm 8. Deci, ce este special la 5? Ei bine, de 5 ori 2 este de 10. Și amintiți-vă de la spec. PSET care dorim să adăugăm cifrele ori numărul 2, și nu ori numărul 2 în sine. Deci, dacă numărul inițial este 7, de 7 ori 2 este de 14. Vrem să adăugați 1 plus 4 la numărul, nu 14. Deci, aici, în cazul în care numărul este de 5 sau mai mare, ceea ce facem noi este cifre actuală 2 ori minus 9. Și dacă te gândești la asta, 5 ori 2 este 10. Și așa suntem adăugarea de 1, care este 10 minus 9. Și de 6 ori 2 este de 12. Deci, suntem adăugarea de 3, care este 12 minus 9. Și care funcționează pentru toate numerele. Deci, asta e ceea ce vom adăuga pentru control noastre. Iar acest altceva este ceea ce se ocupă Pasul Doi dintre algoritm Luhn, care este doar adăugarea cifra dacă nu se întâmplă a fi una dintre toate celelalte cifre. Deci, odată ce ne-am că, aceasta este păstrarea urmări primele două caractere ale numărul cardului de credit, primele două cifre, din moment ce suntem în cele din urmă vor să doriți să utilizați ca aici pentru a verifica, regulă, un Visa trebuie să înceapă cu aceasta, și un nevoile American Express pentru a începe cu aceasta, și așa mai departe. În cele din urmă, vom face carte de credit număr egal de card de credit număr împărțit la 10. De ce facem asta? Ei bine, tocmai ne-am ocupat de ultima cifră. Împărțirea la 10 se va schimba întregul număr de peste. Deci, acum, când ne-am bucla înapoi, suntem va fi de manipulare în al doilea rând pentru ultima cifră. Apoi, când ne-am lovit din nou, vom să taie de-a doua să dureze cifre, bucla spate, și mâner al treilea la ultima cifră, și așa mai departe, până la număr ajunge la 0, moment în care ne-am iesi din bucla în timp ce. Suntem, de asemenea, ține evidența creditului lungime numar de card, din moment ce este important să se distingă dacă este un număr de card de credit valabil. Deci, acum, odată ce ne-am calculat de control, putem determina dacă este un card valid. Mod de control 10 este parte de algoritm Luhn lui. În cazul în care suma de control Mod 10 se întoarce ceva non-zero, atunci acest lucru se va întoarce adevărat, în acest caz, numărul trebuie să fie invalid. În caz contrar, în cazul în care suma de control mod 10 este 0, atunci putem continua. Acest mare parte, dacă spune, în cazul în care prima două cifre sunt egale cu AMEX 1, cazul în care până aici, vom vedea că AMEX 1, conform spec., este 34. Și vom compara, de asemenea, o la AMEX 2, care este de 37. Și numărul de lungimea de card de credit este egală cu de așteptat American Express lungime carte, atunci putem imprima American Express. Vom face un lucru similar cu Visa. Primele două cifre trebuie să fie mai mare mare sau egal cu 40, sau mai puțin mare sau egal cu 49. Cei care reprezintă carduri Visa valide. Iar lungimea trebuie să fie egal cu Visa Lungime 1 sau Visa Lungime 2. Și astfel lungimea trebuie să fie 13 sau 16 de cifre. Și, în cele din urmă cu MasterCard, este similar cu Visa, că primele două cifre trebuie să fie într-o anumită gama, și mustul de lungime să fie exact 16 cifre. Deci, dacă oricare dintre aceste cazuri dețin, apoi în primul caz, vom imprima AMEX. Dacă acest caz are, vom imprima Visa. Dacă acest caz are, vom imprima MasterCard. Dar, în cazul în care nici unul dintre cei care dețin, chiar în cazul în care suma de control a fost valabil, încă imprima invalid. Pentru că nu e unul din aceste tipuri de carduri. Numele meu este Rob, și sper să găsit interesant de credit.