ISBN13 check digit: Difference between revisions
Content added Content deleted
(Add Quackery) |
Not a robot (talk | contribs) (Add Cowgol) |
||
Line 703: | Line 703: | ||
False</pre> |
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}}== |
=={{header|D}}== |
||
{{trans|Kotlin}} |
{{trans|Kotlin}} |