program DammAlgorithm; uses sysutils; TYPE TA = ARRAY[0..9,0..9] OF UInt8; CONST table : TA = ((0,3,1,7,5,9,8,6,4,2), (7,0,9,2,1,5,4,8,6,3), (4,2,0,6,8,7,1,3,5,9), (1,7,5,0,9,8,3,4,2,6), (6,1,2,3,0,4,5,9,7,8), (3,6,7,4,2,0,9,5,8,1), (5,8,6,9,7,2,0,1,3,4), (8,9,4,5,3,6,2,0,1,7), (9,4,3,8,6,1,7,2,0,5), (2,5,8,1,4,3,6,7,9,0)); function Damm(s : string) : BOOLEAN; VAR interim,i : UInt8; BEGIN interim := 0; i := 1; WHILE i <= length(s) DO Begin interim := table[interim,ORD(s[i])-ORD('0')]; INC(i); END; Damm := interim=0; END; PROCEDURE Print(number : Uint32); VAR isValid : BOOLEAN; buf :string; BEGIN buf := IntToStr(number); isValid := Damm(buf); Write(buf); IF isValid THEN Write(' is valid') ELSE Write(' is invalid'); WriteLn; END; BEGIN Print(5724); Print(5727); Print(112946); Print(112949); Readln; END.