>> ROB BOWDEN: Привет, я Роб.
И я надеюсь, что вы взимается на кредит.
Так первое, что мы должны сделать, будет просить кредитной карты
число от пользователя.
Здесь мы используем getLongLong.
Вы могли бы также использоваться GetString, но в этом случае, вы должны были бы проверить
что бы не было нечисловой символы в строке.
Таким образом, мы будем использовать getLongLong.
>> Помните, что вы не можете использовать что-то как GetInt, так как число будет
слишком большой, чтобы поместиться в виде целого числа.
Как только мы получим эту цифру, мы см. здесь это пока петля.
Так что это в то время как цикл реализации Алгоритм Luhn о том, что вы
см. в PSet спец.
>> И это на самом деле происходит быть немного умный.
Таким образом, в PSet спецификации, заметить, что Первый и второй шаги отдельно.
Мы сначала идти в течение всего кредитной карты число, ищу через
характер, начиная со второго по последний символ, и умножения их
и добавляя все цифры.
Тогда после этого, мы добавляем в все другие цифр.
>> Таким образом, вместо того, чтобы делать те, в двух отдельные шаги, мы собираемся объединить
их в одну итерацию над Весь номер кредитной карты.
Здесь мы видим десятичного CUR цифра равна номер кредитной карты, мод 10.
Что такое номер кредитной карты мод 10 делаешь?
Это дает нам последнюю цифру в целого числа.
Так что помните, что, если мы разделили номер до на 10, то остаток
будет все, что последняя цифра.
23 разделить на 10, остаток будет 3.
>> Таким образом, последняя цифра, теперь вот, мы видим, мы ветвления на мульт на 2.
Так что мы собираемся использовать разовый на 2 для интернет различия между
один из «всех других чисел от Вторая цифра "числа.
Несколько на 2 собирается начать, как ложным, так как последней цифры не должны
рассматривать с второй последней цифре.
>> Так то в конце этого для цикла мы видеть, что мы собираемся изменить это
от ложного на истинное.
На следующей итерации для петли, это будет не в считается истинным до
конец, когда мы меняем это от истинного на ложное.
Потому что тогда мы будем на третий Последняя цифра, которая не является одним из
цифры, что мы должны умножить на 2.
>> Так что, если мы оказались на одной из тех, цифры, которые мы хотим умножить на 2,
мы видим мы добавляем в наш суммы.
И вот, мы используем тройной оператор, чтобы еще
снова быть немного умный.
Так что если текущ. цифра меньше 5, то мы можем просто сделать CUR значные раз 2.
Это очень просто.
Если это 1, то мы хотим добавить 2.
Если это 2, мы хотим добавить 4.
Если это 4, мы хотим добавить 8.
>> Так что особенного в 5?
Ну, в 5 раз 2 10.
И помните из PSet спецификации, что мы хотим, чтобы добавить цифры
число раз 2 и не число раз 2 Сам.
Таким образом, если оригинальный номер является 7, 7 раз 2 составляет 14.
Мы хотим добавить 1 плюс 4 к числу, не 14.
>> Таким образом, здесь, если число 5 или выше, что мы делаем в настоящее вре-значный
раз 2 минус 9.
И если вы думаете о том, что, 5 раз 2 10.
И так мы добавляем 1, что на 10 минус 9.
И 6 раз 2 равно 12.
Так мы добавляем 3, которые составляет 12 минус 9.
И это работает для всех номеров.
>> Так вот что мы добавляем к нашей контрольной суммы.
И это еще является то, что обработка Шаг Два алгоритма Лун, который находится всего
добавив цифру, если этого не произойдет чтобы быть одним из каждых других цифр.
Поэтому, как только у нас есть, что это держит трек из первых двух символов
номер кредитной карты, первые два цифры, так как мы в конечном итоге собираются
хотите использовать, что сюда, чтобы проверить, Все в порядке, Visa должен начать
с этим, а также потребности American Express начать с этим, и так далее.
>> Наконец, мы делаем кредитной карты число равно кредитной карты
делится на 10 число.
Почему мы делаем это?
Ну, мы просто обрабатываются последнюю цифру.
Разделив на 10 сместится весь номер более.
Так что теперь, когда мы петля назад, мы будет обработка
второй последней цифре.
Потом, когда мы попали это снова, мы собираемся отрезать вторую последнему
цифра, петля назад, и обрабатывать третий продлится цифру, и так далее, до тех пор,
число достигает 0, в какой точке мы вырваться из время цикла.
>> Мы также отслеживать кредита Длина номер карты, так как это
Важно различать, является ли это ряд кредитную карту.
Так что теперь, как только мы рассчитывали Контрольная, мы можем определить, является ли это
является допустимым карты.
Контрольная мод 10 является частью алгоритма Лун в.
Если контрольная сумма мод 10 возвращается что-то не равен нулю, то это вернет истину,
в этом случае, число должен быть неправильным.
>> В противном случае, если контрольная сумма мод 10 равен 0, то мы можем продолжать.
Это большая еще, если говорит, если первый две цифры равны AMEX 1,
где здесь, мы видим, что AMEX 1, в соответствии с спецификации, составляет 34.
И мы будем также сравнить его в AMEX 2, который является 37.
И длина номер кредитной карты является приравнивается к ожидаемому American Express
Длина карты, то можно распечатать карты American Express.
>> Мы сделаем нечто подобное с Visa.
Первые две цифры должны быть больше или равно 40 или меньше
или равно 49.
Те, представляют собой действенные карты Visa.
И длина должна быть равна Виза Длина 1 или Visa Длина 2.
И поэтому длина должна быть либо 13 или 16 цифр.
>> И, наконец, MasterCard, это похож на Visa, что первые два
цифры должны быть в определенный Диапазон, а длина обязательным
ровно 16 цифр.
Так что, если любой из этих случаев имеет места, то в первый случай, мы будем печатать AMEX.
Если этот случай имеет место, мы будем печатать Visa.
Если этот случай имеет место, мы будем распечатать MasterCard.
>> Но если никто из тех, держать, даже Если контрольная сумма была действительна,
мы по-прежнему печатать недействительным.
Потому что это не один из эти типы карт.
Меня зовут Боб, и я надеюсь, что вы найдено кредитной интересно.