A while ago I wrote a program to convert decimal numbers to roman numerals. I've been trying to make this into a function but can't get it working.
If anyone can help that'd be great
print ~roman_nums(21,1,"")
END
FUNCTION ~roman_nums(n,d,rn$)
SELECT d
CASE 1 : big = 1000 : small = 100 : big$ = "M" : small$ = "C" : ENDCASE
CASE 2 : big = 500 : big$ = "D" : ENDCASE
CASE 3 : big = 100 : small = 10 : big$ = "C" : small$ = "X" : ENDCASE
CASE 4 : big = 50 : big$ = "L" : ENDCASE
CASE 5 : big = 10 : small = 1 : big$ = "X" : small$ = "I" : ENDCASE
CASE 6 : big = 5 : big$ = "V" : ENDCASE
CASE 7 : big = 1 : big$ = "I" : small = 0 : ENDCASE
ENDSELECT
WHILE x >= (big - small)
IF x < big
x = x + small
rn$ = rn$ + small$
ELSE
x = x - big
rn$ = rn$ + big$
ENDIF
ENDWHILE
if x >= 0 and d<7 then ~roman_nums(n,d+1,rn$)
ENDFUNCTION rn$
[EDIT]
OH MY GOD! I hadn't changed "x" to "n", sorry guys
[EDIT]
Nope, still doesn't work
roman$ = ~roman_nums$(21,1,"")
print roman$
END
FUNCTION ~roman_nums$(n,d,rn$)
SELECT d
CASE 1 : big = 1000 : small = 100 : big$ = "M" : small$ = "C" : ENDCASE
CASE 2 : big = 500 : big$ = "D" : ENDCASE
CASE 3 : big = 100 : small = 10 : big$ = "C" : small$ = "X" : ENDCASE
CASE 4 : big = 50 : big$ = "L" : ENDCASE
CASE 5 : big = 10 : small = 1 : big$ = "X" : small$ = "I" : ENDCASE
CASE 6 : big = 5 : big$ = "V" : ENDCASE
CASE 7 : big = 1 : big$ = "I" : small = 0 : ENDCASE
ENDSELECT
WHILE n >= (big - small)
IF n < big
n = n + small
rn$ = rn$ + small$
ELSE
n = n - big
rn$ = rn$ + big$
ENDIF
ENDWHILE
if n >= 0 and d<7 then ~roman_nums$(n,d+1,rn$)
`print rn$
ENDFUNCTION rn$
Printing inside the function seems to work (rem'd out)(although it prints three times? and one of them is 20???)
Your signature has been erased by a mod because it was rubbish.