Hier der Algorithmus umgesetzt in C/C++
int modulo10(const char* lpszNummer)
{
// 'lpszNummer' darf nur Ziffern zwischen 0 und 9 enthalten!
static const int nTabelle[] = { 0, 9, 4, 6, 8, 2, 7, 1, 3, 5
};
int nUebertrag = 0;
while (*lpszNummer)
{
nUebertrag = nTabelle[(nUebertrag + *lpszNummer
- '0') % 10];
++lpszNummer;
}
return (10 - nUebertrag) % 10;
}
Hier der Algorithmus umgesetzt in Visual Basic
Function Modulo10(ByVal strNummer As String) As Integer
'strNummer darf nur Ziffern zwischen 0 und 9 enthalten!
Dim intTabelle(0 To 9) As Integer
Dim intÜbertrag As Integer
Dim intIndex As Integer
intTabelle(0) = 0: intTabelle(1) = 9
intTabelle(2) = 4: intTabelle(3) = 6
intTabelle(4) = 8: intTabelle(5) = 2
intTabelle(6) = 7: intTabelle(7) = 1
intTabelle(8) = 3: intTabelle(9) = 5
For intIndex = 1 To Len(strNummer)
intÜbertrag = intTabelle((intÜbertrag + Mid(strNummer, intIndex, 1)) Mod 10)
Next
Modulo10 = (10 - intÜbertrag) Mod 10
End Function
Hier der Algorithmus umgesetzt in C#
public static int modulo10(string nummer)
{
// 'nummer' darf nur Ziffern zwischen 0 und 9 enthalten!
int[] tabelle = { 0, 9, 4, 6, 8, 2, 7, 1, 3, 5 };
int uebertrag = 0;
foreach (char ziffer in nummer)
uebertrag = tabelle[(uebertrag +
ziffer - '0') % 10];
return (10 - uebertrag) % 10;
}
|