>> ROB BOWDEN: Oi, eu sou Rob.
E eu espero que você é cobrado up para o crédito.
Então a primeira coisa que precisamos fazer é solicitar o cartão de crédito
número do utilizador.
Aqui, estamos usando getLongLong.
Você também poderia ter usado getString, mas nesse caso, você precisa verificar
que não houvesse não numérica caracteres na string.
Então vamos usar getLongLong.
>> Lembre-se que você não pode usar algo como getInt, uma vez que o número será
grande demais para caber em um inteiro.
Uma vez que temos esse número, nós ver aqui este loop while.
Portanto, este loop while está implementando Algoritmo de Luhn que você
ver na especificação pset.
>> E isso está realmente acontecendo a ser um pouco inteligente.
Então, na especificação pset, observe que Etapas um e dois são separados.
Primeiro, passar por cima de todo o cartão de crédito número, olhando para todos os outros
personagem a partir do segundo para último caractere, e multiplicando-os
e adicionando todos os dígitos.
Então, depois disso, nós adicionamos em todos os outros dígitos.
>> Então, ao invés de fazer aqueles dois etapas separadas, vamos combinar
los em uma iteração sobre o número completo do cartão de crédito.
Aqui, vemos int iguais dígitos atu número do cartão de crédito, mod 10.
Qual é o número do cartão de crédito mod 10 está fazendo?
Ele está nos dando o último dígito o número inteiro.
Então lembre-se de que se dividiu o número por 10, então o restante
seria tudo o que o último dígito é.
23 dividido por 10, o restante será 3.
>> Assim, o último dígito, agora aqui, vemos estamos ramificando em mult por 2.
Então, o que nós vamos estar usando mult por 2 para se diferenciar
um dos "todos os outros números de o segundo "algarismos.
Mult por 2 vai começar como falsos, uma vez que o último dígito não deve
ser considerada a partir do segundo para último dígito.
>> Então, em seguida, no final deste loop, nós ver que nós vamos mudar isso
de falso para verdadeiro.
Na próxima iteração do loop para, vai considerada verdadeira até
Ao final, quando mudamos que de verdadeiro para falso.
Porque, então, estaremos no terceiro para último dígito, o que não é um dos
dígitos que devemos multiplicar por 2.
>> Então, se acontecer de estar em um daqueles dígitos que queremos multiplicar por 2,
vemos que estamos aumentando a nossa soma de verificação.
E aqui, nós estamos usando o operador ternário para uma vez
novamente ser um pouco inteligente.
Portanto, se act dígito é inferior a 5, em seguida, podemos apenas fazer vezes dígitos act 2.
Isso é simples.
Se for 1, então queremos adicionar 2.
Se for 2, queremos adicionar 4.
Se é 4, queremos adicionar 8.
>> Então, o que há de especial sobre 5?
Bem, 5 vezes 2 é 10.
E lembre-se de que a especificação pset queremos adicionar os dígitos do
vezes o número 2, e não o número de vezes em si 2.
Assim, se o número original é de 7, 7 vezes 2 é 14.
Queremos adicionar 1 mais 4 para o número, não 14.
>> Então, aqui, se o número for 5 ou superior, o que estamos fazendo é o dígito cur
vezes 2 menos 9.
E se você pensar sobre isso, 5 vezes 2 é 10.
E assim estamos adicionando 1, que é 10 menos 9.
E 6 vezes 2 é 12.
Então, nós estamos adicionando 3, que é 12 menos 9.
E isso funciona para todos os números.
>> Então é isso que nós estamos adicionando para a soma de verificação.
E essa outra coisa é o que está lidando Passo Dois dos algoritmo de Luhn, que é apenas
acrescentando o dígito, se isso não acontecer ser um dos outros dígitos cada.
Assim, uma vez que temos de que, este é manter trilha dos dois primeiros caracteres
o número do cartão de crédito, os dois primeiros dígitos, já que estamos indo eventualmente
querer usar isso aqui em baixo para verificar, tudo bem, a Visa tem que começar
com isso, e um necessidades American Express começar com este, e assim por diante.
>> Finalmente, fazemos cartão de crédito número é igual a cartão de crédito
número dividido por 10.
Por que fazemos isso?
Bem, nós apenas segurou o último dígito.
Dividindo por 10 vai mudar o número inteiro mais.
Então agora quando volta ao início, estamos vai ser o manuseamento
segundo para último dígito.
Então, quando nós batemos novamente, nós vamos para cortar o penúltimo lugar
dígito, de volta loop, e lidar com o terceiro ao último dígito, e assim por diante, até que o
número chega a 0, em que ponto que sair do loop while.
>> Estamos também mantendo o controle do crédito comprimento número do cartão, uma vez que é
importante distinguir se é um número de cartão de crédito válido.
Então, agora, uma vez que já calculou o checksum, podemos determinar se ele
é um cartão válido.
O mod soma 10 é parte do algoritmo de Luhn.
Se de checksum mod 10 retorna algo diferente de zero, então isso vai retornar true,
caso em que, o número deve ser inválido.
>> Caso contrário, se soma mod 10 é 0, então podemos continuar.
Este grande coisa se está a dizer, se o primeiro dois dígitos são iguais a American Express 1,
onde até aqui, vemos que AMEX 1, de acordo com a especificação, é de 34.
E nós também vamos compará-lo a American Express 2, que é 37.
E o comprimento do número de cartão de crédito é igual ao esperado American Express
comprimento cartão, então podemos imprimir American Express.
>> Vamos fazer uma coisa semelhante com a Visa.
Os dois primeiros dígitos precisa ser maior que ou igual a 40, ou menos
que ou igual a 49.
Aqueles representam cartões Visa válidos.
E o comprimento deve ser igual Visa ou Visa Comprimento 1 Comprimento 2.
E assim, o comprimento deve ser tanto 13 ou 16 dígitos.
>> E, finalmente, com a MasterCard, é semelhante ao visto, que os dois primeiros
dígitos precisam estar em um certo gama, e o comprimento deve
ser exatamente 16 dígitos.
Assim, se qualquer desses casos segurar, então em No primeiro caso, vamos imprimir AMEX.
Se este caso tem, vamos imprimir Visa.
Se este caso tem, vamos imprimir MasterCard.
>> Mas se nenhum dos segurar, mesmo se o checksum é válido,
ainda imprimir inválido.
Porque não é um dos esses tipos de cartões.
Meu nome é Rob, e eu espero que você achei interessante de crédito.