1 00:00:00,000 --> 00:00:13,290 2 00:00:13,290 --> 00:00:14,570 >> ROB BOWDEN: Ciao, sono Rob. 3 00:00:14,570 --> 00:00:17,610 E spero che tu stia addebitato up per il credito. 4 00:00:17,610 --> 00:00:20,710 Quindi prima cosa che dobbiamo fare è richiesta la carta di credito 5 00:00:20,710 --> 00:00:22,710 numero dall'utente. 6 00:00:22,710 --> 00:00:25,060 Qui, stiamo usando getLongLong. 7 00:00:25,060 --> 00:00:29,070 Si potrebbe avere anche usato getString, ma in questo caso, avresti bisogno di controllare 8 00:00:29,070 --> 00:00:32,340 che non c'erano non numerico caratteri della stringa. 9 00:00:32,340 --> 00:00:34,560 Così useremo getLongLong. 10 00:00:34,560 --> 00:00:38,070 >> Ricordate che non è possibile utilizzare qualcosa come getInt, dal momento che il numero sarà 11 00:00:38,070 --> 00:00:40,650 troppo grande per stare in un numero intero. 12 00:00:40,650 --> 00:00:44,480 Una volta che abbiamo quel numero, ci vedi qui ciclo while. 13 00:00:44,480 --> 00:00:48,210 Quindi questo ciclo while sta attuando L'algoritmo di Luhn che si 14 00:00:48,210 --> 00:00:50,980 vedere le specifiche pset. 15 00:00:50,980 --> 00:00:53,830 >> E sta realmente succedendo ad essere un po 'intelligente. 16 00:00:53,830 --> 00:01:00,800 Così nella specifica pset, notare che Passaggi uno e due sono separati. 17 00:01:00,800 --> 00:01:05,160 Per prima cosa andiamo su tutta la carta di credito numero, alla ricerca di ogni altro 18 00:01:05,160 --> 00:01:09,775 carattere a partire dal secondo al ultimo carattere, e moltiplicandoli 19 00:01:09,775 --> 00:01:11,750 e aggiungendo tutte le cifre. 20 00:01:11,750 --> 00:01:16,150 Poi, dopo che, aggiungiamo in tutte le altre cifre. 21 00:01:16,150 --> 00:01:20,660 >> Così, invece di fare quelle due fasi distinte, stiamo andando a combinare 22 00:01:20,660 --> 00:01:24,430 li in una iterazione sulla numero di carta di credito. 23 00:01:24,430 --> 00:01:29,710 Qui, vediamo int uguali cifre CUR numero di carta di credito, mod 10. 24 00:01:29,710 --> 00:01:32,050 Qual è il numero di carta di credito mod 10 facendo? 25 00:01:32,050 --> 00:01:35,750 Ci sta dando l'ultima cifra in numero intero. 26 00:01:35,750 --> 00:01:39,340 Quindi ricorda che se abbiamo diviso il numerare da 10, poi il resto 27 00:01:39,340 --> 00:01:42,180 sarebbe tutto ciò che l'ultima cifra è. 28 00:01:42,180 --> 00:01:46,560 23 diviso 10, il resto sarà 3. 29 00:01:46,560 --> 00:01:53,760 >> Così l'ultima cifra, ora qui, vediamo stiamo ramificazione sul mult da 2. 30 00:01:53,760 --> 00:01:57,630 Quindi ciò che andremo a utilizzare mult per 2 per sta differenziando tra 31 00:01:57,630 --> 00:02:02,110 uno dei "ogni altri numeri da Il secondo "numeri a due cifre. 32 00:02:02,110 --> 00:02:08,310 Mult da 2 sta per iniziare come falso, dal momento che l'ultima cifra non dovrebbe 33 00:02:08,310 --> 00:02:11,750 essere considerato dal secondo per ultima cifra. 34 00:02:11,750 --> 00:02:16,760 >> Allora alla fine di questo ciclo for, abbiamo vediamo che stiamo andando a modificare questa 35 00:02:16,760 --> 00:02:18,870 da false a true. 36 00:02:18,870 --> 00:02:22,520 Nella successiva iterazione del ciclo, sta andando a considerare vero fino 37 00:02:22,520 --> 00:02:25,090 Alla fine, quando cambiamo da true a false. 38 00:02:25,090 --> 00:02:28,290 Perché allora saremo sul terzo ultima cifra, che non è uno dei 39 00:02:28,290 --> 00:02:32,210 cifre che dobbiamo moltiplicare per 2. 40 00:02:32,210 --> 00:02:37,410 >> Quindi, se ci capita di essere in una di quelle cifre che vogliamo moltiplicare per 2, 41 00:02:37,410 --> 00:02:40,610 vediamo stiamo aggiungendo alla nostra checksum. 42 00:02:40,610 --> 00:02:43,640 E qui, stiamo usando la operatore ternario di una volta 43 00:02:43,640 --> 00:02:45,470 ancora una volta essere un po 'intelligente. 44 00:02:45,470 --> 00:02:50,170 Quindi, se cur cifra è inferiore a 5, quindi possiamo solo fare volte cifra CUR 2. 45 00:02:50,170 --> 00:02:50,690 Questo è semplice. 46 00:02:50,690 --> 00:02:52,770 Se è 1, allora vogliamo aggiungere 2. 47 00:02:52,770 --> 00:02:54,090 Se è 2, vogliamo aggiungere 4. 48 00:02:54,090 --> 00:02:55,530 Se è 4, vogliamo aggiungere 8. 49 00:02:55,530 --> 00:02:57,400 >> Allora, cosa c'è di speciale 5? 50 00:02:57,400 --> 00:03:00,290 Beh, 5 volte 2 è 10. 51 00:03:00,290 --> 00:03:05,920 E ricordate dalla specifica pset che vogliamo aggiungere le cifre del 52 00:03:05,920 --> 00:03:09,300 volte numero 2 e non il numero di volte 2 stesso. 53 00:03:09,300 --> 00:03:13,920 Quindi se il numero originale è 7, 7 volte 2 è 14. 54 00:03:13,920 --> 00:03:18,930 Vogliamo aggiungere 1 più 4 al numero, non 14. 55 00:03:18,930 --> 00:03:24,050 >> Così qui, se il numero è 5 o maggiore, quello che stiamo facendo è cifra attuale 56 00:03:24,050 --> 00:03:26,470 2 volte meno 9. 57 00:03:26,470 --> 00:03:29,940 E se si pensa che, 5 volte 2 è 10. 58 00:03:29,940 --> 00:03:33,130 E così stiamo aggiungendo 1, che è 10 meno 9. 59 00:03:33,130 --> 00:03:35,490 E 6 volte 2 è 12. 60 00:03:35,490 --> 00:03:38,380 Quindi stiamo aggiungendo 3, che 12 è meno 9. 61 00:03:38,380 --> 00:03:40,250 E che funziona per tutti i numeri. 62 00:03:40,250 --> 00:03:43,330 >> Ed è quello che stiamo aggiungendo alla nostra checksum. 63 00:03:43,330 --> 00:03:49,970 Ed il resto è quello che sta Passo movimentazione Due di algoritmo di Luhn, che è appena 64 00:03:49,970 --> 00:03:55,010 aggiungendo la cifra se non accade essere una delle ogni altre cifre. 65 00:03:55,010 --> 00:04:01,440 Quindi, una volta che abbiamo questo, questo è mantenere registra i primi due caratteri 66 00:04:01,440 --> 00:04:05,220 il numero della carta di credito, i primi due cifre, dal momento che stiamo finalmente andando 67 00:04:05,220 --> 00:04:08,980 a voler usare quella qui a verificare, tutto bene, un visto deve iniziare 68 00:04:08,980 --> 00:04:14,440 con questo, e una necessità American Express iniziare con questo, e così via. 69 00:04:14,440 --> 00:04:16,850 >> Infine, facciamo la carta di credito numero uguale di carta di credito 70 00:04:16,850 --> 00:04:18,730 numero diviso per 10. 71 00:04:18,730 --> 00:04:19,829 Perché lo facciamo? 72 00:04:19,829 --> 00:04:22,070 Beh, abbiamo appena gestito l'ultima cifra. 73 00:04:22,070 --> 00:04:24,880 Dividendo per 10 si sposterà l'intero numero sopra. 74 00:04:24,880 --> 00:04:27,150 Così ora quando ci loop back, siamo andando a gestire la 75 00:04:27,150 --> 00:04:28,540 secondo per ultima cifra. 76 00:04:28,540 --> 00:04:31,060 Poi, quando ci ha colpito di nuovo, stiamo andando tagliare il penultimo 77 00:04:31,060 --> 00:04:35,060 cifre, indietro loop, e gestire il terzo per durare cifre, e così via, fino alla 78 00:04:35,060 --> 00:04:40,120 numero raggiunge 0, a questo punto rompiamo fuori dal ciclo while. 79 00:04:40,120 --> 00:04:43,560 >> Stiamo anche tenere traccia del credito lunghezza del numero della carta, dato che è 80 00:04:43,560 --> 00:04:48,440 importante distinguere se è un numero di carta di credito valida. 81 00:04:48,440 --> 00:04:53,560 Così ora, una volta che abbiamo calcolato la checksum, siamo in grado di determinare se 82 00:04:53,560 --> 00:04:55,180 è una tessera valida. 83 00:04:55,180 --> 00:04:58,010 Il mod checksum 10 è parte dell'algoritmo di Luhn. 84 00:04:58,010 --> 00:05:03,360 Se checksum mod 10 rendimenti qualcosa non-zero, allora questo restituirà true, 85 00:05:03,360 --> 00:05:06,650 in tal caso, il numero deve essere valido. 86 00:05:06,650 --> 00:05:12,590 >> Altrimenti, se checksum mod 10 è 0, allora possiamo continuare. 87 00:05:12,590 --> 00:05:18,360 Questo grande else if sta dicendo, se il primo due cifre sono uguali a AMEX 1, 88 00:05:18,360 --> 00:05:23,640 dove fino qui, vediamo che AMEX 1, come da specifiche, è 34. 89 00:05:23,640 --> 00:05:26,595 E ci confronteremo anche per AMEX 2, che è 37. 90 00:05:26,595 --> 00:05:30,360 91 00:05:30,360 --> 00:05:34,210 E il numero di lunghezza carta di credito è pari al previsto American Express 92 00:05:34,210 --> 00:05:37,910 lunghezza della carta, allora possiamo stampare American Express. 93 00:05:37,910 --> 00:05:41,920 >> Faremo una cosa simile con Visa. 94 00:05:41,920 --> 00:05:51,940 Le prime due cifre devono essere maggiori o uguale a 40, o meno 95 00:05:51,940 --> 00:05:54,290 o uguale a 49. 96 00:05:54,290 --> 00:05:57,180 Coloro che rappresentano carte Visa valide. 97 00:05:57,180 --> 00:06:01,530 E la lunghezza deve essere uguale a Visa Lunghezza 1 o Visa Lunghezza 2. 98 00:06:01,530 --> 00:06:07,320 E così la lunghezza deve essere 13 o 16 cifre lunga. 99 00:06:07,320 --> 00:06:12,240 >> E infine con MasterCard, è simile a Visa, che i primi due 100 00:06:12,240 --> 00:06:15,340 cifre devono essere in un certo gamma, e il mosto lunghezza 101 00:06:15,340 --> 00:06:19,440 essere esattamente 16 cifre. 102 00:06:19,440 --> 00:06:24,390 Quindi, se uno qualsiasi di questi casi tenere, poi in nel primo caso, noi lo stamperemo AMEX. 103 00:06:24,390 --> 00:06:26,310 In questo caso vale, noi lo stamperemo Visa. 104 00:06:26,310 --> 00:06:28,400 In questo caso vale, faremo stampare MasterCard. 105 00:06:28,400 --> 00:06:32,170 >> Ma se nessuno di coloro che detengono, anche se il checksum era valido, 106 00:06:32,170 --> 00:06:33,900 abbiamo ancora stampiamo valido. 107 00:06:33,900 --> 00:06:37,050 Perché non è una delle questi tipi di carte. 108 00:06:37,050 --> 00:06:40,030 Il mio nome è Rob, e spero trovato interessante credito. 109 00:06:40,030 --> 00:06:46,272