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. І памятаеце з 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. Але калі ніхто з тых, трымаць, нават Калі кантрольная сума была сапраўдная, мы па-ранейшаму друкаваць несапраўдным. Таму што гэта не адзін з гэтыя тыпы карт. Мяне клічуць Боб, і я спадзяюся, што вы знойдзена крэдытнай цікава.