Разные системы могут иметь разную реализацию размера 'long'.* 1 001 *
Предложите используя * 1 003 * от stdint.h
, потому что
- всегда будет иметь тот же размер в различных системах / реализации
- значение должно быть без знака, как смещениеЗначения со знаком проблематичны.
при вызове scanf()
рекомендуется использовать спецификатор формата: SCNu64
SCNu64
от inttypes.h
пример для scanf()
uint64_t card_num;
scanf( "%" SCNu64, &card_num );
, как проверить номер кредитной карты
Запишите последнюю цифру номера кредитной карты.Это цифра контрольной суммы, которую вы будете использовать для проверки оставшейся части номера кредитной карты.
Перечислите каждую цифру номера кредитной карты, начиная с цифры слева от контрольной суммы и двигаясь влево,Если номер кредитной карты имеет 16 цифр, удвойте количество каждой цифры в нечетных местах, работая справа налево, прежде чем добавлять его в свой список.Для кредитных карт с 15 цифрами вы должны удвоить цифры в четных местах.Если при удвоении цифры получается число больше 10, добавьте две цифры нового номера вместе и запишите этот результат в свой список.Например, если цифра на карте - семь, удвоение приведет к 14. В итоге сумма из двух цифр будет равна пяти.
Итого ваш список чисел.Не включайте контрольную сумму в вашу сумму.Если общая сумма может быть равномерно разделена на 10, у кредитной карты есть действительный номер.В противном случае вам не следует обрабатывать транзакцию по кредитной карте.
Как определить поставщика кредитной карты
Определите компанию, выпустившую кредитную карту, посмотрев напервый номерКарты, начинающиеся с «3», - American Express.Те, которые начинаются с «4» - это кредитные и дебетовые карты Visa, те, которые начинаются с «5» - это кредитные и дебетовые карты MasterCard, а те, которые начинаются с «6» - это кредитные карты Discover.Плата за обслуживание, взимаемая с продавцов, варьируется в зависимости от компании-карты.
Подсчитайте цифры в номере кредитной карты.Большинство кредитных карт должны содержать 15 или 16 цифр.Кредитные карты American Express содержат 15. Три другие крупные кредитные компании - Visa, Mastercard и Discover - имеют 16-значную последовательность на своих картах.