1 00:00:00,000 --> 00:00:13,290 2 00:00:13,290 --> 00:00:14,570 >> ROB BOWDEN: Привіт, я Роб. 3 00:00:14,570 --> 00:00:17,610 І я сподіваюся, що ви стягується на кредит. 4 00:00:17,610 --> 00:00:20,710 Так перше, що ми повинні зробити, проситиме кредитної картки 5 00:00:20,710 --> 00:00:22,710 число від користувача. 6 00:00:22,710 --> 00:00:25,060 Тут ми використовуємо getLongLong. 7 00:00:25,060 --> 00:00:29,070 Ви могли б також використовуватися GetString, але в цьому випадку, ви повинні були б перевірити 8 00:00:29,070 --> 00:00:32,340 що б не було нечислової символи в рядку. 9 00:00:32,340 --> 00:00:34,560 Таким чином, ми будемо використовувати getLongLong. 10 00:00:34,560 --> 00:00:38,070 >> Пам'ятайте, що ви не можете використовувати щось як GetInt, так як число буде 11 00:00:38,070 --> 00:00:40,650 занадто великий, щоб поміститися у вигляді цілого числа. 12 00:00:40,650 --> 00:00:44,480 Як тільки ми отримаємо цю цифру, ми см. тут це поки петля. 13 00:00:44,480 --> 00:00:48,210 Так що це в той час як цикл реалізації Алгоритм Luhn про те, що ви 14 00:00:48,210 --> 00:00:50,980 см. в PSet спец. 15 00:00:50,980 --> 00:00:53,830 >> І це насправді відбувається бути трохи розумний. 16 00:00:53,830 --> 00:01:00,800 Таким чином, в PSet специфікації, помітити, що Перший і другий кроки окремо. 17 00:01:00,800 --> 00:01:05,160 Ми спочатку йти протягом всього кредитної картки число, шукаю через 18 00:01:05,160 --> 00:01:09,775 характер, починаючи з другого по останній символ, і множення їх 19 00:01:09,775 --> 00:01:11,750 і додаючи всі цифри. 20 00:01:11,750 --> 00:01:16,150 Тоді після цього, ми додаємо в всі інші цифр. 21 00:01:16,150 --> 00:01:20,660 >> Таким чином, замість того, щоб робити ті, в двох окремі кроки, ми збираємося об'єднати 22 00:01:20,660 --> 00:01:24,430 їх в одну ітерацію над Весь номер кредитної карти. 23 00:01:24,430 --> 00:01:29,710 Тут ми бачимо десяткового CUR цифра дорівнює номер кредитної картки, мод 10. 24 00:01:29,710 --> 00:01:32,050 Що таке номер кредитної картки мод 10 робиш? 25 00:01:32,050 --> 00:01:35,750 Це дає нам останню цифру в цілого числа. 26 00:01:35,750 --> 00:01:39,340 Так що пам'ятайте, що, якщо ми розділили номер до на 10, то залишок 27 00:01:39,340 --> 00:01:42,180 буде все, що остання цифра. 28 00:01:42,180 --> 00:01:46,560 23 розділити на 10, залишок буде 3. 29 00:01:46,560 --> 00:01:53,760 >> Таким чином, остання цифра, тепер ось, ми бачимо, ми розгалуження на мульт на 2. 30 00:01:53,760 --> 00:01:57,630 Так що ми збираємося використовувати разовий на 2 для інтернет відмінності між 31 00:01:57,630 --> 00:02:02,110 один з «всіх інших чисел від Друга цифра "числа. 32 00:02:02,110 --> 00:02:08,310 Кілька на 2 збирається почати, як помилковим, так як останньої цифри не повинні 33 00:02:08,310 --> 00:02:11,750 розглядати з другий останній цифрі. 34 00:02:11,750 --> 00:02:16,760 >> Так то в кінці цього для циклу ми бачити, що ми збираємося змінити це 35 00:02:16,760 --> 00:02:18,870 від помилкового на істинне. 36 00:02:18,870 --> 00:02:22,520 На наступній ітерації для петлі, це буде не в вважається істинним до 37 00:02:22,520 --> 00:02:25,090 кінець, коли ми міняємо це від істинного на хибне. 38 00:02:25,090 --> 00:02:28,290 Бо тоді ми будемо на третій Остання цифра, яка не є одним із 39 00:02:28,290 --> 00:02:32,210 цифри, що ми повинні помножити на 2. 40 00:02:32,210 --> 00:02:37,410 >> Так що, якщо ми виявилися на одній з тих, цифри, які ми хочемо помножити на 2, 41 00:02:37,410 --> 00:02:40,610 ми бачимо ми додаємо в наш суми. 42 00:02:40,610 --> 00:02:43,640 І ось, ми використовуємо потрійний оператор, щоб ще 43 00:02:43,640 --> 00:02:45,470 знову бути трохи розумний. 44 00:02:45,470 --> 00:02:50,170 Так що якщо текущ. Цифра менше 5, то ми можемо просто зробити CUR значні раз 2. 45 00:02:50,170 --> 00:02:50,690 Це дуже просто. 46 00:02:50,690 --> 00:02:52,770 Якщо це 1, то ми хочемо додати 2. 47 00:02:52,770 --> 00:02:54,090 Якщо це 2, ми хочемо додати 4. 48 00:02:54,090 --> 00:02:55,530 Якщо це 4, ми хочемо додати 8. 49 00:02:55,530 --> 00:02:57,400 >> Так що особливого в 5? 50 00:02:57,400 --> 00:03:00,290 Ну, в 5 разів 10 лютого. 51 00:03:00,290 --> 00:03:05,920 І пам'ятаєте з PSet специфікації, що ми хочемо, щоб додати цифри 52 00:03:05,920 --> 00:03:09,300 число раз 2 і не число раз 2 Сам. 53 00:03:09,300 --> 00:03:13,920 Таким чином, якщо оригінальний номер є 7, 7 раз 2 становить 14. 54 00:03:13,920 --> 00:03:18,930 Ми хочемо додати 1 плюс 4 до числа, не 14. 55 00:03:18,930 --> 00:03:24,050 >> Таким чином, тут, якщо число 5 або вище, що ми робимо в даний вре-значний 56 00:03:24,050 --> 00:03:26,470 раз 2 мінус 9. 57 00:03:26,470 --> 00:03:29,940 І якщо ви думаєте про те, що, 5 раз 10 Лютого. 58 00:03:29,940 --> 00:03:33,130 І так ми додаємо 1, що на 10 мінус 9. 59 00:03:33,130 --> 00:03:35,490 І 6 разів 2 одно 12. 60 00:03:35,490 --> 00:03:38,380 Так ми додаємо 3, які становить 12 мінус 9. 61 00:03:38,380 --> 00:03:40,250 І це працює для всіх номерів. 62 00:03:40,250 --> 00:03:43,330 >> Так ось що ми додаємо до нашої контрольної суми. 63 00:03:43,330 --> 00:03:49,970 І це ще є те, що обробка Крок Два алгоритму Лун, який знаходиться всього 64 00:03:49,970 --> 00:03:55,010 додавши цифру, якщо цього не відбудеться щоб бути одним з кожних інших цифр. 65 00:03:55,010 --> 00:04:01,440 Тому, як тільки у нас є, що це тримає трек з перших двох символів 66 00:04:01,440 --> 00:04:05,220 номер кредитної картки, перші два цифри, так як ми в кінцевому підсумку збираються 67 00:04:05,220 --> 00:04:08,980 хочете використовувати, що сюди, щоб перевірити, Все в порядку, Visa повинен почати 68 00:04:08,980 --> 00:04:14,440 з цим, а також потреби American Express почати з цим, і так далі. 69 00:04:14,440 --> 00:04:16,850 >> Нарешті, ми робимо кредитної картки число дорівнює кредитної картки 70 00:04:16,850 --> 00:04:18,730 ділиться на 10 число. 71 00:04:18,730 --> 00:04:19,829 Чому ми робимо це? 72 00:04:19,829 --> 00:04:22,070 Ну, ми просто обробляються останню цифру. 73 00:04:22,070 --> 00:04:24,880 Розділивши на 10 зміститься весь номер більше. 74 00:04:24,880 --> 00:04:27,150 Так що тепер, коли ми петля тому, ми буде обробка 75 00:04:27,150 --> 00:04:28,540 другий останній цифрі. 76 00:04:28,540 --> 00:04:31,060 Потім, коли ми потрапили це знову, ми збираємося відрізати другого останньому 77 00:04:31,060 --> 00:04:35,060 цифра, петля тому, і обробляти третій приділяється цифру, і так далі, до тих пір, 78 00:04:35,060 --> 00:04:40,120 число досягає 0, в якій точці ми вирватися з часом циклу. 79 00:04:40,120 --> 00:04:43,560 >> Ми також відстежувати кредиту Довжина номер карти, так як це 80 00:04:43,560 --> 00:04:48,440 Важливо розрізняти, чи є це ряд кредитну карту. 81 00:04:48,440 --> 00:04:53,560 Так що тепер, як тільки ми розраховували Контрольна, ми можемо визначити, чи є це 82 00:04:53,560 --> 00:04:55,180 є допустимим карти. 83 00:04:55,180 --> 00:04:58,010 Контрольна мод 10 є частиною алгоритму Лун в. 84 00:04:58,010 --> 00:05:03,360 Якщо контрольна сума мод 10 повертається щось не дорівнює нулю, то це поверне істину, 85 00:05:03,360 --> 00:05:06,650 в цьому випадку, число повинен бути неправильним. 86 00:05:06,650 --> 00:05:12,590 >> В іншому випадку, якщо контрольна сума мод 10 дорівнює 0, то ми можемо продовжувати. 87 00:05:12,590 --> 00:05:18,360 Це велика ще, якщо говорить, якщо перший дві цифри дорівнюють AMEX 1, 88 00:05:18,360 --> 00:05:23,640 де тут, ми бачимо, що AMEX 1, відповідно до специфікації, становить 34. 89 00:05:23,640 --> 00:05:26,595 І ми будемо також порівняти його в AMEX 2, який є 37. 90 00:05:26,595 --> 00:05:30,360 91 00:05:30,360 --> 00:05:34,210 І довжина номер кредитної картки є прирівнюється до очікуваного American Express 92 00:05:34,210 --> 00:05:37,910 Довжина карти, то можна роздрукувати карти American Express. 93 00:05:37,910 --> 00:05:41,920 >> Ми зробимо щось подібне з Visa. 94 00:05:41,920 --> 00:05:51,940 Перші дві цифри повинні бути більше або дорівнює 40 або менше 95 00:05:51,940 --> 00:05:54,290 або дорівнює 49. 96 00:05:54,290 --> 00:05:57,180 Ті, являють собою дієві карти Visa. 97 00:05:57,180 --> 00:06:01,530 І довжина повинна бути дорівнює Віза Довжина 1 або Visa Довжина 2. 98 00:06:01,530 --> 00:06:07,320 І тому довжина повинна бути або 13 або 16 цифр. 99 00:06:07,320 --> 00:06:12,240 >> І, нарешті, MasterCard, це схожий на Visa, що перші два 100 00:06:12,240 --> 00:06:15,340 цифри повинні бути в певний Діапазон, а довжина обов'язковим 101 00:06:15,340 --> 00:06:19,440 рівно 16 цифр. 102 00:06:19,440 --> 00:06:24,390 Так що, якщо будь-який з цих випадків має місця, то в перший випадок, ми будемо друкувати AMEX. 103 00:06:24,390 --> 00:06:26,310 Якщо цей випадок має місце, ми будемо друкувати Visa. 104 00:06:26,310 --> 00:06:28,400 Якщо цей випадок має місце, ми будемо роздрукувати MasterCard. 105 00:06:28,400 --> 00:06:32,170 >> Але якщо ніхто з тих, тримати, навіть Якщо контрольна сума була дійсна, 106 00:06:32,170 --> 00:06:33,900 ми як і раніше друкувати недійсним. 107 00:06:33,900 --> 00:06:37,050 Тому що це не один з ці типи карт. 108 00:06:37,050 --> 00:06:40,030 Мене звуть Боб, і я сподіваюся, що ви знайдено кредитної цікаво. 109 00:06:40,030 --> 00:06:46,272