Roman numerals/Encode: Difference between revisions
Content added Content deleted
(Dialects of BASIC moved to the BASIC section.) |
(→{{header|GW-BASIC}}: Added.) |
||
Line 1,421: | Line 1,421: | ||
513 = DXIII |
513 = DXIII |
||
33 = XXXIII |
33 = XXXIII |
||
</pre> |
|||
=== {{header|GW-BASIC}} === |
|||
{{trans|DWScript}} |
|||
{{works with|BASICA}} |
|||
<syntaxhighlight lang="gwbasic"> |
|||
10 REM Roman numerals/Encode |
|||
20 DIM WEIGHTS%(12), SYMBOLS$(12) |
|||
30 FOR J% = 0 TO 12: READ WEIGHTS%(J%), SYMBOLS$(J%): NEXT J% |
|||
40 DATA 1000, "M", 900, "CM", 500, "D", 400, "CD", 100, "C", 90, "XC" |
|||
50 DATA 50, "L", 40, "XL", 10, "X", 9, "IX", 5, "V", 4, "IV", 1, "I" |
|||
60 REM 3888 or MMMDCCCLXXXVIII (15 chars) is |
|||
70 REM the longest string properly encoded |
|||
80 REM with these symbols. |
|||
90 AVALUE% = 1990: GOSUB 1000: PRINT ROMAN$ ' MCMXC |
|||
100 AVALUE% = 2022: GOSUB 1000: PRINT ROMAN$ ' MMXXII |
|||
110 AVALUE% = 3888: GOSUB 1000: PRINT ROMAN$ ' MMMDCCCLXXXVIII |
|||
120 END |
|||
990 REM Encode to roman |
|||
1000 ROMAN$ = "": I% = 0 |
|||
1010 WHILE (I% <= 12) AND (AVALUE% > 0) |
|||
1020 WHILE AVALUE% >= WEIGHTS%(I%) |
|||
1030 ROMAN$ = ROMAN$ + SYMBOLS$(I%) |
|||
1040 AVALUE% = AVALUE% - WEIGHTS%(I%) |
|||
1050 WEND |
|||
1060 I% = I% + 1 |
|||
1070 WEND |
|||
1080 RETURN |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
MCMXC |
|||
MMXXII |
|||
MMMDCCCLXXXVIII |
|||
</pre> |
</pre> |
||