Damm algorithm: Difference between revisions

Content deleted Content added
W96 (talk | contribs)
m Ref. and links
Source code: Removing section: this adds nothing to the already clear description: it has no illustrative value
Line 108:
== Graphical illustration ==
[[File:Check digit TA quasigroup dhmd111rr illustration eg5724.svg]]
 
== Source code ==
 
=== C ===
<source lang="c">
char Taq(char* number)
{
const char taqDhmd111rr[]=
"0317598642""7092154863""4206871359""1750983426""6123045978"
"3674209581""5869720134""8945362017""9438617205""2581436790";
char interim='0';
char* p;
for(p=number;*p!='\0';++p){
if((unsigned char)(*p-'0')>9)
return '-'; //minus sign indicates an error: character is not a digit
interim=taqDhmd111rr[(*p-'0')+(interim-'0')*10];
}
return interim;
}
 
char CalculateCheckDigit(char* numberWithoutCheckDigit)
{
return Taq(numberWithoutCheckDigit);
}
 
typedef int BOOL;
BOOL IsCheckDigitValid(char* numberWithCheckDigit)
{
return Taq(numberWithCheckDigit)=='0';
}
</source>
 
== Strengths and weaknesses ==