Number names: Difference between revisions

Content deleted Content added
Underscore (talk | contribs)
Deleted AutoHotkey. If the example referred to is ever retrieved, it can be put here in place of the incorrect solution.
m →‎[[Number names#ALGOL 68]]: fix a missing CASE OUT, add GOTO to make compatable with official ALGOL 68 subset.
Line 137: Line 137:
=={{header|ALGOL 68}}==
=={{header|ALGOL 68}}==
<!-- # From: www.codecodex.com/wiki/index.php%3Ftitle%3DConvert_an_integer_into_words - site states it is GPL # -->
<!-- # From: www.codecodex.com/wiki/index.php%3Ftitle%3DConvert_an_integer_into_words - site states it is GPL # -->
{{works with|ALGOL 68|Standard - no extensions to language used}}

{{works with|ALGOL 68G|Any - tested with release [http://sourceforge.net/projects/algol68/files/algol68g/algol68g-1.18.0/algol68g-1.18.0-9h.tiny.el5.centos.fc11.i386.rpm/download 1.18.0-9h.tiny]}}

{{works with|ELLA ALGOL 68|Any (with appropriate job cards) - tested with release [http://sourceforge.net/projects/algol68/files/algol68toc/algol68toc-1.8.8d/algol68toc-1.8-8d.fc9.i386.rpm/download 1.8.8d.fc9.i386]}}
<lang algol68>PROC number words = (INT n)STRING:(
<lang algol68>PROC number words = (INT n)STRING:(
# returns a string representation of n in words. Currently
# returns a string representation of n in words. Currently
Line 146: Line 151:
[]STRING decades = []STRING
[]STRING decades = []STRING
("twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety")[@2];
("twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety")[@2];

PROC three digits = (INT n)STRING: (
PROC three digits = (INT n)STRING: (
# does the conversion for n from 0 to 999. #
# does the conversion for n from 0 to 999. #
Line 152: Line 157:
INT units = n MOD 10;
INT units = n MOD 10;
(n >= 100|digits[n OVER 100] + " " + "hundred" + (n MOD 100 /= 0|" and "|"")|"") +
(n >= 100|digits[n OVER 100] + " " + "hundred" + (n MOD 100 /= 0|" and "|"")|"") +
(tens /= 0|(tens = 1|teens[units]|decades[tens] + (units /= 0|"-"|""))) +
(tens /= 0|(tens = 1|teens[units]|decades[tens] + (units /= 0|"-"|""))|"") +
(units /= 0 AND tens /= 1 OR n = 0|digits[units]|"")
(units /= 0 AND tens /= 1 OR n = 0|digits[units]|"")
);
);
Line 164: Line 169:
(u /= 0 OR n = 0|three digits(u)|"")
(u /= 0 OR n = 0|three digits(u)|"")
);
);

on logical file end(stand in, (REF FILE f)BOOL: stop iteration);
on logical file end(stand in, (REF FILE f)BOOL: GOTO stop iteration);
on value error(stand in, (REF FILE f)BOOL: stop iteration);
on value error(stand in, (REF FILE f)BOOL: GOTO stop iteration);
DO # until user hits EOF #
DO # until user hits EOF #
INT n;
INT n;