>> ROB BOWDEN: Hola, soy Rob.
Y espero que se le cobra para el crédito.
Así que lo primero que tenemos que hacer se solicitará la tarjeta de crédito
número del usuario.
Aquí, estamos utilizando getLongLong.
Usted podría también haber utilizado getString, pero en ese caso, que había necesidad de revisar
que no había no numérico caracteres de la cadena.
Así que vamos a utilizar getLongLong.
>> Recuerde que usted no puede usar algo como getInt, ya que el número será
demasiado grande para caber en un entero.
Una vez que tengamos ese número, nos ver aquí este bucle while.
Así que este bucle while se ejecuta El algoritmo de Luhn que se
ver en el conjunto de procesadores de especificaciones.
>> Y en realidad va a ser un poco inteligente.
Así que en la especificación de conjunto de procesadores, observe que Pasos uno y dos son independientes.
En primer lugar, repasamos toda la tarjeta de crédito número, en busca de todos los demás
carácter inicial de la segunda a último carácter, y multiplicándolos
y la adición de todos los dígitos.
Luego, después de eso, añadimos todos los otros dígitos.
>> Así que en lugar de hacer los de dos pasos separados, vamos a combinar
en una sola iteración sobre la número de tarjeta de crédito entero.
Aquí, vemos iguales dígitos act int número de tarjeta de crédito, mod 10.
¿Cuál es el número de tarjeta de crédito mod 10 haciendo?
Nos está dando el último dígito en toda la serie.
Así que recuerde que si dividimos la numerar por 10, entonces el resto
sería lo que es último dígito.
23 dividido por 10, la resto será 3.
>> Así que el último dígito, ahora aquí, vemos estamos ramificación en mult por 2.
Así que lo que vamos a estar usando mult por 2 para es diferenciar entre
uno de los "todos los otros números de los segundos números de un dígito ".
En conformidad con un 2 va a comenzar como falso, ya que el último dígito no debe
tener en cuenta desde el segundo al último dígito.
>> Así que luego, al final de este bucle, nos vemos que vamos a cambiar esta
de false a true.
En la siguiente iteración del bucle para, que va a considerarse cierto hasta
Al final, cuando cambiamos que de verdadero a falso.
Porque entonces vamos a estar en la tercera a último dígito, que no es uno de los
dígitos que debemos multiplicar por 2.
>> Así que si nos toca estar en uno de esos cifras que queremos multiplicar por 2,
vemos que estamos añadiendo a nuestra suma de comprobación.
Y aquí, estamos usando la operador ternario a una vez
volverá a ser un poco inteligente.
Así que si el dígito actual es inferior a 5, a continuación, sólo podemos hacer tiempos dígitos act 2.
Eso es simple.
Si es 1, entonces queremos añadir 2.
Si es 2, queremos añadir 4.
Si se trata de 4, queremos añadir 8.
>> ¿Cuál es tan especial acerca de 5?
Bueno, 5 por 2 es 10.
Y recuerde de la especificación pset que queremos añadir los dígitos del
número multiplicado por 2, y no el número multiplicado por sí mismo 2.
Así que si el número original es 7, 7 por 2 es 14.
Queremos añadir 1 más 4 al número, no 14.
>> Así que aquí, si el número es 5 o mayor, lo que estamos haciendo es el dígito act
2 veces menos 9.
Y si se piensa que, 5 por 2 es 10.
Y así estamos añadiendo 1, que es 10 menos 9.
Y 6 por 2 es 12.
Así que vamos a añadir 3, que es 12 menos 9.
Y eso funciona para todos los números.
>> Así que eso es lo que estamos añadiendo a nuestra suma de comprobación.
Y esta otra cosa es lo que el manejo de Paso Dos de algoritmo de Luhn, que es justo
añadiendo el dígito si no sucede ser cada uno de los otros dígitos.
Así que una vez que tengamos eso, esto es mantener un seguimiento de los dos primeros caracteres de
el número de tarjeta de crédito, los dos primeros dígitos, ya que estamos con el tiempo van
a querer usar ese aquí para verificar, bien, una visa tiene que empezar
con esto, y que necesita un American Express para comenzar con este, y así sucesivamente.
>> Por último, hacemos la tarjeta de crédito número de tarjeta de crédito es igual
número dividido por 10.
¿Por qué hacemos esto?
Bueno, sólo manejamos el último dígito.
Dividiendo por 10 se desplazará el número entero más.
Así que ahora cuando nos bucle de nuevo, estamos va a ser el manejo de la
segundo al último dígito.
Luego, cuando llegamos a este nuevo, vamos para cortar el penúltimo
dígitos, de vuelta del bucle, y manejar la tercera al último dígito, y así sucesivamente, hasta que la
número llega a 0, en cuyo punto salimos de el bucle while.
>> También estamos manteniendo un registro del crédito Longitud del número de la tarjeta, ya que es
importante distinguir si se trata de un número de tarjeta de crédito válida.
Así que ahora, una vez que hemos calculado el checksum, podemos determinar si
es una tarjeta válida.
La suma de comprobación mod 10 es parte del algoritmo de Luhn.
Si la suma de comprobación mod 10 vuelve algo distinto de cero, entonces esto va a devolver true,
en cuyo caso, el número debe ser válida.
>> De lo contrario, si la suma de comprobación mod 10 es 0, entonces podemos continuar.
Este gran cosa si está diciendo, si la primera dos dígitos son iguales a 1 AMEX,
donde hasta aquí, vemos que AMEX 1, según la especificación, es decir 34.
Y también vamos a compararlo a AMEX 2, que es 37.
Y la tarjeta de crédito longitud del número es igual a la esperada American Express
la longitud de la tarjeta, entonces podemos imprimir American Express.
>> Vamos a hacer una cosa similar con Visa.
Los dos primeros dígitos deben ser mayor que o igual a 40, o menos
que o igual a 49.
Aquellos representan las tarjetas Visa válidos.
Y la longitud tiene que ser igual a Visa o Visa Longitud 1 Longitud 2.
Y así, la longitud debe ser 13 o 16 dígitos.
>> Y finalmente con MasterCard, que es similar a Visa, que los dos primeros
dígitos necesitan estar en un cierto rango, y el mosto de longitud
ser exactamente 16 dígitos.
Así que si alguno de esos casos se sostienen, entonces en el primer caso, vamos a imprimir AMEX.
Si este caso se mantiene, vamos a imprimir Visa.
Si este caso se mantiene, vamos a imprimir MasterCard.
>> Pero si ninguno de los que sostienen, incluso Si la suma de comprobación era válido,
todavía imprimimos válido.
Porque no es uno de los tipos de tarjetas.
Mi nombre es Rob, y espero que encontrado interesante crédito.