Roman numerals/Decode: Difference between revisions

Content added Content deleted
Line 2,716: Line 2,716:


=={{header|FutureBasic}}==
=={{header|FutureBasic}}==
<lang futurebasic>
<lang futurebasic>window 1
local fn RomantoDecimal( roman as Str15 ) as short
dim as short i, n, preNum, num


local fn RomantoDecimal( roman as CFStringRef ) as long
preNum = 0 : num = 0
long i, n, preNum = 0, num = 0

for i = roman[0] to 1 step -1
for i = len(roman) - 1 to 0 step -1
n = 0
if roman[i] = _"M" then n = 1000
n = 0
select ( fn StringCharacterAtIndex( roman, i ) )
if roman[i] = _"D" then n = 500
if roman[i] = _"C" then n = 100
case _"M" : n = 1000
if roman[i] = _"L" then n = 50
case _"D" : n = 500
if roman[i] = _"X" then n = 10
case _"C" : n = 100
if roman[i] = _"V" then n = 5
case _"L" : n = 50
if roman[i] = _"I" then n = 1
case _"X" : n = 10
if n < preNum then num = num - n else num = num + n
case _"V" : n = 5
preNum = n
case _"I" : n = 1
end select
next
if ( n < preNum ) then num = num - n else num = num + n
preNum = n
next
end fn = num
end fn = num


print " MCMXC ="; fn RomantoDecimal( "MCMXC" )
print @" MCMXC = "; fn RomantoDecimal( @"MCMXC" )
print " MMVIII ="; fn RomantoDecimal( "MMVIII" )
print @" MMVIII = "; fn RomantoDecimal( @"MMVIII" )
print " MMXVI ="; fn RomantoDecimal( "MMXVI" )
print @" MMXVI = "; fn RomantoDecimal( @"MMXVI" )
print "MDCLXVI ="; fn RomantoDecimal( "MDCLXVI" )
print @"MDCLXVI = "; fn RomantoDecimal( @"MDCLXVI" )
print " MCMXIV ="; fn RomantoDecimal( "MCMXIV" )
print @" MCMXIV = "; fn RomantoDecimal( @"MCMXIV" )
print " DXIII ="; fn RomantoDecimal( "DXIII" )
print @" DXIII = "; fn RomantoDecimal( @"DXIII" )
print " M ="; fn RomantoDecimal( "M" )
print @" M = "; fn RomantoDecimal( @"M" )
print " DXIII ="; fn RomantoDecimal( "DXIII" )
print @" DXIII = "; fn RomantoDecimal( @"DXIII" )
print " XXXIII ="; fn RomantoDecimal( "XXXIII" )
print @" XXXIII = "; fn RomantoDecimal( @"XXXIII" )

</lang>
HandleEvents</lang>


Output:
Output: