Zum Verifizieren von Kreditkarten - Nummern.
Falls es mal jemand brauchen sollte, bzw. gehört in jede Quellcode - Sammlung.
Code
/*
Wikipedia :
Der Luhn-Algorithmus wurde vom deutschen Informatiker Hans Peter Luhn
im Jahr 1954 entwickelt. Der Algorithmus berechnet die einfache Prüfsummen-Formel,
die die Identifikationsnummern wie kreditkartennummern validiert. Er wurde entwickelt,
um gegen versehentliche Fehler zu schützen, wie Tippfehlern von Ziffern.
*/
Cls
Declare String Numbers[]
Numbers[0] = "49927398716" ' versch. Nummern zum Test
Numbers[1] = "49927398717"
Numbers[2] = "1234567812345678"
Numbers[3] = "1234567812345670"
WhileLoop 0, SizeOf(Numbers[]) - 1
Print Numbers[&LOOP], "ist ", If(IsValid(Numbers[&LOOP]), "gültig", "nicht gültig")
EndWhile
Waitkey
Proc IsValid
Parameters String cardnummer
Declare Long l, s1, s2, s2a
cardnummer = ReverseString(cardnummer)
l = Len(cardnummer)
WhileLoop 1, l, 2
s1 = s1 + Val(Mid$(cardnummer, &LOOP, 1))
EndWhile
WhileLoop 2, l, 2
s2a = Val(Mid$(cardnummer, &LOOP, 1)) * 2
If s2a < 10
s2 = s2 + s2a
Else
s2 = s2 + 1 + Val(Right$(Str$(s2a), 1))
EndIf
EndWhile
If Right$(Str$(s1 + s2), 1) = "0"
Return 1
Else
Return 0
EndIf
EndProc
Proc ReverseString
Parameters String s
Declare String z
z = ""
WhileLoop Len(s), 1, -1
z = z + mid$(s, &LOOP, 1);
EndWhile
Return z
EndProc
Alles anzeigen