ISBN13 check digit: Difference between revisions

Add Cowgol
(Add Quackery)
(Add Cowgol)
Line 703:
False</pre>
 
=={{header|Cowgol}}==
<lang cowgol>include "cowgol.coh";
 
sub check_isbn13(isbn: [uint8]): (r: uint8) is
var n: uint8 := 0;
r := 0;
loop
var c := [isbn];
isbn := @next isbn;
if c == 0 then break; end if;
c := c - '0';
if c <= 9 then
r := r + c;
n := n + 1;
if (n & 1) == 0 then
r := r + c * 2;
end if;
end if;
end loop;
if n == 13 and r%10 == 0 then
r := 1;
else
r := 0;
end if;
end sub;
 
var isbns: [uint8][] := {
"978-1734314502", "978-1734314509", "978-1788399081", "978-1788399083"
};
 
var result: [uint8][] := {": bad\n", ": good\n"};
 
var n: uint8 := 0;
while n < @sizeof isbns loop
print(isbns[n]);
print(result[check_isbn13(isbns[n])]);
n := n + 1;
end loop;</lang>
 
{{out}}
 
<pre>978-1734314502: good
978-1734314509: bad
978-1788399081: good
978-1788399083: bad</pre>
=={{header|D}}==
{{trans|Kotlin}}
2,117

edits