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 раз 2 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 раз 2 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