>> 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 разів 10 лютого.
І пам'ятаєте з PSet специфікації, що ми хочемо, щоб додати цифри
число раз 2 і не число раз 2 Сам.
Таким чином, якщо оригінальний номер є 7, 7 раз 2 становить 14.
Ми хочемо додати 1 плюс 4 до числа, не 14.
>> Таким чином, тут, якщо число 5 або вище, що ми робимо в даний вре-значний
раз 2 мінус 9.
І якщо ви думаєте про те, що, 5 раз 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.
>> Але якщо ніхто з тих, тримати, навіть Якщо контрольна сума була дійсна,
ми як і раніше друкувати недійсним.
Тому що це не один з ці типи карт.
Мене звуть Боб, і я сподіваюся, що ви знайдено кредитної цікаво.