ISBN13 check digit: Difference between revisions
Content added Content deleted
(add →Pascal) |
(Added solution for Action!) |
||
Line 198: | Line 198: | ||
C:\>isbn13 978-1788399083 |
C:\>isbn13 978-1788399083 |
||
bad</pre> |
bad</pre> |
||
=={{header|Action!}}== |
|||
{{libheader|Action! Tool Kit}} |
|||
<lang Action!>INCLUDE "D2:CHARTEST.ACT" ;from the Action! Tool Kit |
|||
BYTE FUNC CheckISBN13(CHAR ARRAY t) |
|||
BYTE i,index,sum,v |
|||
sum=0 index=0 |
|||
FOR i=1 TO t(0) |
|||
DO |
|||
v=t(i) |
|||
IF IsDigit(v) THEN |
|||
v==-'0 |
|||
IF index MOD 2=1 THEN |
|||
v==*3 |
|||
FI |
|||
sum==+v |
|||
index==+1 |
|||
ELSEIF v#' AND v#'- THEN |
|||
RETURN (0) |
|||
FI |
|||
OD |
|||
IF index#13 OR sum MOD 10#0 THEN |
|||
RETURN (0) |
|||
FI |
|||
RETURN (1) |
|||
PROC Test(CHAR ARRAY t) |
|||
BYTE correct |
|||
correct=CheckISBN13(t) |
|||
Print(t) Print(" is ") |
|||
IF correct THEN |
|||
PrintE("correct") |
|||
ELSE |
|||
PrintE("incorrect") |
|||
FI |
|||
RETURN |
|||
PROC Main() |
|||
Put(125) PutE() ;clear screen |
|||
Test("978-1734314502") |
|||
Test("978-1734314509") |
|||
Test("978-1788399081") |
|||
Test("978-1788399083") |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/ISBN13_check_digit.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
978-1734314502 is correct |
|||
978-1734314509 is incorrect |
|||
978-1788399081 is correct |
|||
978-1788399083 is incorrect |
|||
</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |