1 00:00:00,000 --> 00:00:13,290 2 00:00:13,290 --> 00:00:14,570 >> ROB BOWDEN: Bună, eu sunt Rob. 3 00:00:14,570 --> 00:00:17,610 Și sper că sunteți taxat pentru credit. 4 00:00:17,610 --> 00:00:20,710 Deci, primul lucru pe care trebuie să facem se solicita cardul de credit 5 00:00:20,710 --> 00:00:22,710 număr de utilizator. 6 00:00:22,710 --> 00:00:25,060 Aici, suntem cu ajutorul getLongLong. 7 00:00:25,060 --> 00:00:29,070 Ai fi putut fi folosit, de asemenea, getString, dar în acest caz, ai nevoie pentru a verifica 8 00:00:29,070 --> 00:00:32,340 că nu au existat non-numeric caractere în șir. 9 00:00:32,340 --> 00:00:34,560 Deci, vom folosi getLongLong. 10 00:00:34,560 --> 00:00:38,070 >> Amintiți-vă că nu puteți utiliza ceva ca getint, deoarece numărul va fi 11 00:00:38,070 --> 00:00:40,650 prea mare pentru a încăpea într-un întreg. 12 00:00:40,650 --> 00:00:44,480 După ce vom avea acest număr, ne-am a se vedea aici buclă în timp. 13 00:00:44,480 --> 00:00:48,210 Deci, această buclă în timp ce este de punere în aplicare Algoritmul Luhn care vă 14 00:00:48,210 --> 00:00:50,980 a se vedea în spec. PSET. 15 00:00:50,980 --> 00:00:53,830 >> Și se intampla de fapt pentru a fi un pic mai inteligent. 16 00:00:53,830 --> 00:01:00,800 Deci, în spec. PSET, observați că Pașii de la unu și doi sunt separate. 17 00:01:00,800 --> 00:01:05,160 Mergem în primul rând pe întreaga cardul de credit număr, în căutarea pentru orice alt 18 00:01:05,160 --> 00:01:09,775 caracter începând de la al doilea la ultimul caracter, și le-înmulțirea 19 00:01:09,775 --> 00:01:11,750 și adăugarea toate cifrele. 20 00:01:11,750 --> 00:01:16,150 Apoi, după aceea, vom adăuga în toate celelalte cifre. 21 00:01:16,150 --> 00:01:20,660 >> Deci, în loc de a face pe cei de la doi etape separate, vom combina 22 00:01:20,660 --> 00:01:24,430 le într-o singură iterație de-a lungul întregul număr de card de credit. 23 00:01:24,430 --> 00:01:29,710 Aici, vom vedea int egali curentii cifre numărul cardului de credit, mod 10. 24 00:01:29,710 --> 00:01:32,050 Care este numărul de card de credit Mod 10 faci? 25 00:01:32,050 --> 00:01:35,750 Acesta ne dă ultima cifră din numărul total. 26 00:01:35,750 --> 00:01:39,340 Deci, amintiți-vă că, dacă ne-am impartit în număr de până la 10, apoi restul 27 00:01:39,340 --> 00:01:42,180 ar fi indiferent că ultima cifră este. 28 00:01:42,180 --> 00:01:46,560 23 împărțit la 10, restul va fi 3. 29 00:01:46,560 --> 00:01:53,760 >> Deci ultima cifră, acum aici, vom vedea suntem ramificare pe Mult de 2. 30 00:01:53,760 --> 00:01:57,630 Deci, ceea ce am de gând să fie folosind Mult de 2 pentru este diferențierea între 31 00:01:57,630 --> 00:02:02,110 una dintre cele mai "la fiecare alte numere de a doua cifre "numere. 32 00:02:02,110 --> 00:02:08,310 Mult de 2 este de gând să înceapă ca fals, din moment ce ultima cifră nu ar trebui să 33 00:02:08,310 --> 00:02:11,750 fi privite din în al doilea rând pentru ultima cifră. 34 00:02:11,750 --> 00:02:16,760 >> Deci, atunci, la sfârșitul acestei pentru bucla, am vedea că vom schimba acest lucru 35 00:02:16,760 --> 00:02:18,870 de la fals la adevărat. 36 00:02:18,870 --> 00:02:22,520 Pe urmatoarea iteratie a buclei pentru, se va considera valabil până 37 00:02:22,520 --> 00:02:25,090 final, când vom schimba se de la adevărat în fals. 38 00:02:25,090 --> 00:02:28,290 Pentru că atunci vom fi pe a treia a ultima cifră, care nu este una a 39 00:02:28,290 --> 00:02:32,210 cifre care ar trebui să se înmulțește cu 2. 40 00:02:32,210 --> 00:02:37,410 >> Deci, dacă se întâmplă să fie pe unul dintre cei cifre pe care dorim să le multiplica de 2, 41 00:02:37,410 --> 00:02:40,610 vom vedea vom adăuga la nostru de control. 42 00:02:40,610 --> 00:02:43,640 Și aici, suntem folosind operatorul ternar la o dată 43 00:02:43,640 --> 00:02:45,470 din nou, să fie un pic mai inteligent. 44 00:02:45,470 --> 00:02:50,170 Deci, dacă actuală cifră este mai mică de 5, atunci putem face doar ori cifre curentii 2. 45 00:02:50,170 --> 00:02:50,690 E simplu. 46 00:02:50,690 --> 00:02:52,770 Dacă este 1, apoi ne-am dori să adăugați 2. 47 00:02:52,770 --> 00:02:54,090 Dacă este 2, dorim să adăugăm 4. 48 00:02:54,090 --> 00:02:55,530 Dacă e 4, dorim să adăugăm 8. 49 00:02:55,530 --> 00:02:57,400 >> Deci, ce este special la 5? 50 00:02:57,400 --> 00:03:00,290 Ei bine, de 5 ori 2 este de 10. 51 00:03:00,290 --> 00:03:05,920 Și amintiți-vă de la spec. PSET care dorim să adăugăm cifrele 52 00:03:05,920 --> 00:03:09,300 ori numărul 2, și nu ori numărul 2 în sine. 53 00:03:09,300 --> 00:03:13,920 Deci, dacă numărul inițial este 7, de 7 ori 2 este de 14. 54 00:03:13,920 --> 00:03:18,930 Vrem să adăugați 1 plus 4 la numărul, nu 14. 55 00:03:18,930 --> 00:03:24,050 >> Deci, aici, în cazul în care numărul este de 5 sau mai mare, ceea ce facem noi este cifre actuală 56 00:03:24,050 --> 00:03:26,470 2 ori minus 9. 57 00:03:26,470 --> 00:03:29,940 Și dacă te gândești la asta, 5 ori 2 este 10. 58 00:03:29,940 --> 00:03:33,130 Și așa suntem adăugarea de 1, care este 10 minus 9. 59 00:03:33,130 --> 00:03:35,490 Și de 6 ori 2 este de 12. 60 00:03:35,490 --> 00:03:38,380 Deci, suntem adăugarea de 3, care este 12 minus 9. 61 00:03:38,380 --> 00:03:40,250 Și care funcționează pentru toate numerele. 62 00:03:40,250 --> 00:03:43,330 >> Deci, asta e ceea ce vom adăuga pentru control noastre. 63 00:03:43,330 --> 00:03:49,970 Iar acest altceva este ceea ce se ocupă Pasul Doi dintre algoritm Luhn, care este doar 64 00:03:49,970 --> 00:03:55,010 adăugarea cifra dacă nu se întâmplă a fi una dintre toate celelalte cifre. 65 00:03:55,010 --> 00:04:01,440 Deci, odată ce ne-am că, aceasta este păstrarea urmări primele două caractere ale 66 00:04:01,440 --> 00:04:05,220 numărul cardului de credit, primele două cifre, din moment ce suntem în cele din urmă vor 67 00:04:05,220 --> 00:04:08,980 să doriți să utilizați ca aici pentru a verifica, regulă, un Visa trebuie să înceapă 68 00:04:08,980 --> 00:04:14,440 cu aceasta, și un nevoile American Express pentru a începe cu aceasta, și așa mai departe. 69 00:04:14,440 --> 00:04:16,850 >> În cele din urmă, vom face carte de credit număr egal de card de credit 70 00:04:16,850 --> 00:04:18,730 număr împărțit la 10. 71 00:04:18,730 --> 00:04:19,829 De ce facem asta? 72 00:04:19,829 --> 00:04:22,070 Ei bine, tocmai ne-am ocupat de ultima cifră. 73 00:04:22,070 --> 00:04:24,880 Împărțirea la 10 se va schimba întregul număr de peste. 74 00:04:24,880 --> 00:04:27,150 Deci, acum, când ne-am bucla înapoi, suntem va fi de manipulare 75 00:04:27,150 --> 00:04:28,540 în al doilea rând pentru ultima cifră. 76 00:04:28,540 --> 00:04:31,060 Apoi, când ne-am lovit din nou, vom să taie de-a doua să dureze 77 00:04:31,060 --> 00:04:35,060 cifre, bucla spate, și mâner al treilea la ultima cifră, și așa mai departe, până la 78 00:04:35,060 --> 00:04:40,120 număr ajunge la 0, moment în care ne-am iesi din bucla în timp ce. 79 00:04:40,120 --> 00:04:43,560 >> Suntem, de asemenea, ține evidența creditului lungime numar de card, din moment ce este 80 00:04:43,560 --> 00:04:48,440 important să se distingă dacă este un număr de card de credit valabil. 81 00:04:48,440 --> 00:04:53,560 Deci, acum, odată ce ne-am calculat de control, putem determina dacă 82 00:04:53,560 --> 00:04:55,180 este un card valid. 83 00:04:55,180 --> 00:04:58,010 Mod de control 10 este parte de algoritm Luhn lui. 84 00:04:58,010 --> 00:05:03,360 În cazul în care suma de control Mod 10 se întoarce ceva non-zero, atunci acest lucru se va întoarce adevărat, 85 00:05:03,360 --> 00:05:06,650 în acest caz, numărul trebuie să fie invalid. 86 00:05:06,650 --> 00:05:12,590 >> În caz contrar, în cazul în care suma de control mod 10 este 0, atunci putem continua. 87 00:05:12,590 --> 00:05:18,360 Acest mare parte, dacă spune, în cazul în care prima două cifre sunt egale cu AMEX 1, 88 00:05:18,360 --> 00:05:23,640 cazul în care până aici, vom vedea că AMEX 1, conform spec., este 34. 89 00:05:23,640 --> 00:05:26,595 Și vom compara, de asemenea, o la AMEX 2, care este de 37. 90 00:05:26,595 --> 00:05:30,360 91 00:05:30,360 --> 00:05:34,210 Și numărul de lungimea de card de credit este egală cu de așteptat American Express 92 00:05:34,210 --> 00:05:37,910 lungime carte, atunci putem imprima American Express. 93 00:05:37,910 --> 00:05:41,920 >> Vom face un lucru similar cu Visa. 94 00:05:41,920 --> 00:05:51,940 Primele două cifre trebuie să fie mai mare mare sau egal cu 40, sau mai puțin 95 00:05:51,940 --> 00:05:54,290 mare sau egal cu 49. 96 00:05:54,290 --> 00:05:57,180 Cei care reprezintă carduri Visa valide. 97 00:05:57,180 --> 00:06:01,530 Iar lungimea trebuie să fie egal cu Visa Lungime 1 sau Visa Lungime 2. 98 00:06:01,530 --> 00:06:07,320 Și astfel lungimea trebuie să fie 13 sau 16 de cifre. 99 00:06:07,320 --> 00:06:12,240 >> Și, în cele din urmă cu MasterCard, este similar cu Visa, că primele două 100 00:06:12,240 --> 00:06:15,340 cifre trebuie să fie într-o anumită gama, și mustul de lungime 101 00:06:15,340 --> 00:06:19,440 să fie exact 16 cifre. 102 00:06:19,440 --> 00:06:24,390 Deci, dacă oricare dintre aceste cazuri dețin, apoi în primul caz, vom imprima AMEX. 103 00:06:24,390 --> 00:06:26,310 Dacă acest caz are, vom imprima Visa. 104 00:06:26,310 --> 00:06:28,400 Dacă acest caz are, vom imprima MasterCard. 105 00:06:28,400 --> 00:06:32,170 >> Dar, în cazul în care nici unul dintre cei care dețin, chiar în cazul în care suma de control a fost valabil, 106 00:06:32,170 --> 00:06:33,900 încă imprima invalid. 107 00:06:33,900 --> 00:06:37,050 Pentru că nu e unul din aceste tipuri de carduri. 108 00:06:37,050 --> 00:06:40,030 Numele meu este Rob, și sper să găsit interesant de credit. 109 00:06:40,030 --> 00:06:46,272