ISBN13 check digit: Difference between revisions

Content added Content deleted
(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}}==