Алгоритм Луна (проверка валидности кредитных карт) - C#
Формулировка задачи:
Прошу помочь разобраться с алгоритмом Луна, используемый для валидности кредитных карт. Какой лучше тип использовать вместо int. Надо ли добавлять проверку, когда количество цифр нечетное? Код не завершен, потому что до конца не понимаю, что еще нужно делать.
int sum = 0; System.Console.WriteLine("Введите номер карты"); string str = System.Console.ReadLine(); int num = int.Parse(str); int digitCount = (int)Math.Log10(num) + 1; int[] array = new int[digitCount]; for (int i = 0; i < digitCount; i++) { array[i] = num % 10; num /= 10; } int p = 1; if (digitCount % 2 == 0) { for (int i = 0; i < digitCount - 1; i++) { if (i % 2 == 0) { p = array[i] * 2; if (p > 9) { p -= 9; } array[i] = p; } else array[i] = array[i]; sum = sum + array[i]; } if (sum%10==0) { System.Console.WriteLine("Number is valid"); } else System.Console.WriteLine("Number is not valid"); } System.Console.ReadKey(); }
Решение задачи: «Алгоритм Луна (проверка валидности кредитных карт)»
textual
Листинг программы
var query = "Тестов33ая стро44ка".Where(n => n >= '0' && n <= '9'); foreach (var q in query) { Console.Write(q); // выведет 3344 }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д