במקומו נפתח פורום חדש, טוב יותר בהרבה מובנים. >>>>
אתם מוזמנים להצטרף אליו,
בואו!
ההצטרפות לפורום התכנות החדש כרוכה בתשלום חודשי סמלי.
דוד ל.ט. כתב:המימוש של C# נמצא פה: http://rosettacode.org/wiki/Luhn_test_o ... mbers#C.23 בשורה אחת:
csharp codereturn digits.Select((d, i) => i % 2 == digits.Length % 2 ? ((2 * d) % 10) + d / 5 : d).Sum() % 10;
Public Function validCardGenery(credit As String) As Boolean
If Len(credit & "") Then
validCardGenery = False
End If
Dim sumAll As Integer
Dim y As Integer
Dim x As Integer
Dim i As Integer
'כרטיס בין 11 ל19 תוים נבדק לפי אלגוריתם המשמש לבדיקת תקינות של ת.ז.
If Len(credit) > 10 And Len(credit) < 20 Then
y = 1
'משתנה שנועד להגדיר האם להכפיל ב1 או ב2
For i = Len(credit) To 1 Step -1
x = CInt(Mid(credit, i, 1))
If y Mod 2 = 0 Then
x = x * 2
If x > 9 Then
x = (x Mod 10) + 1
End If
sumAll = sumAll + x
y = y + 1
Else
x = x * 1
sumAll = sumAll + x
y = y + 1
End If
Next
sumAll = sumAll Mod 10
If sumAll Mod 10 > 0 Then
validCardGenery = False
Else
validCardGenery = True
End If
'אם אורך המספר בין 8 ל9 תווים - מדובר בכרטיס מסוג ישראכרט והאלגוריתם שונה
ElseIf Len(credit) = 8 Or Len(credit) = 9 Then
y = 1
'מספר הכפל כדי לבדוק אימות כרטיס
'אם הכרטיס באורך 8 ספרות - מוסיף לו 0 משמאל לצורך תקינות הבדיקה
If Len(credit) = 8 Then
credit = "0" & credit
End If
For i = Len(credit) To 1 Step -1
x = CInt(Mid(credit, i, 1))
x = x * y
sumAll = sumAll + x
y = y + 1
Next
If sumAll Mod 11 = 0 Then
validCardGenery = True
Else
validCardGenery = False
End If
Else
'אם המספר ארוך מדי או קצר מדי - מדובר במס' שגוי
validCardGenery = False
End If
End Function
משתמשים הגולשים בפורום זה: all bots ו 0 אורחים