У меня возникла проблема с программой, которую я пишу для школы. Мне нужно проверить номера кредитных карт, используя алгоритм Луна, однако у меня возникают трудности с правильной работой алгоритма. Я считаю, что знаю, где проблема, но я не могу это исправить.Алгоритм Luhn не работает
Я считаю, что проблема здесь:
For i = 0 To cardInput.Text.Length - 2 Step -2
Dim x = (i * 2)
If x > 9 Then
x = x - 9
End If
oddTotal += x
Next
'Sum of undoubled digits
For i = 0 To cardLength - 1 Step -2
evenTotal += i
Next
total = oddTotal + evenTotal
checkSum = total
infoOutput.Items.Add("CheckDigit: " & checkDigit)
infoOutput.Items.Add("CheckSum :" & checkSum)
'Verify that the card is valid by the Mod 10 (Lund algoritm)
If checkSum = checkDigit Or checkSum = 0 Then
valid = True
Else
valid = False
End If
Если это необходимо, остальная часть моего проекта можно увидеть here
Мой код не начать с последней цифрой и принимать каждый другая цифра возвращается к началу удвоения. Здесь неверен оператор Step -2? Что я делаю не так?
Вы, кажется, не использовать цифры номера карты. –
Я не понимаю, как я не понимаю, если я использую этот код для отображения выбранной цифры, он отлично отображается в моем списке. infoOutput.Items.Add (cardInput.Text.Substring (cardLength -2,1)) поэтому цикл my For должен выбирать цифры и использовать их правильно? –