阿拉伯與羅馬數字互轉程式
:: 阿拉伯與羅馬數字互轉程式
:: qzwqzw http://bbs.cn-dos.net
:: 2007-01-03 Revision 2
:: 出處:http://www.cn-dos.net/forum/viewthread.php?tid=26230
@echo off
setlocal EnableDelayedExpansion
for /l %%i in (1,1,100) do (
set /a numin=!random!*4200/32768-100
set in=!numin!
set out=
call :Arab2Roman
set in=!out!
call :Roman2Arab
echo.%%i [!numin!:!in!:!out!]
if !numin! neq !out! set /p=--- Invalid ---
)
pause
endlocal
goto :eof
:Arab2Roman
setlocal EnableDelayedExpansion
set num=%in%
set /a tmp=num+0
if not "%num%"=="%tmp%" goto :eof
if %num% geq 4000 goto :eof
if %num% leq 0 goto :eof
set i=0
for %%v in (1000 900 500 400 100 90 50 40 10 9 5 4 1) do (
set /a i+=1
set arab!i!=%%v
)
set i=0
for %%v in (M CM D CD C XC L XL X IX V IV I) do (
set /a i+=1
set roman!i!=%%v
)
set i=1
:a2r_loop
call set tmp=%%arab%i%%%
if 1%num% lss 1%tmp% (
set /a i+=1
) else (
call set rom=%rom%%%roman%i%%%
set /a num-=tmp
)
if 1%num% gtr 10 goto a2r_loop
endlocal & set out=%rom%
goto :eof
::Arab2Roman
:Roman2Arab
setlocal EnableDelayedExpansion
echo.%in%|findstr /r "[^IVXLCDMivxlcdm]">nul && goto :eof
set i=0
for %%v in (1000 900 500 400 100 90 50 40 10 9 5 4 1) do (
set /a i+=1
set arab!i!=%%v
)
set i=0
for %%v in (M 1 D 2 C 3 L 4 X 5 V 6 I) do (
set /a i+=1
set roman!i!=%%v
)
set in=%in:m=M%
set in=%in:d=D%
set in=%in:c=C%
set in=%in:l=L%
set in=%in:x=X%
set in=%in:v=V%
set in=%in:i=I%
set in=%in:CM=1%
set in=%in:CD=2%
set in=%in:XC=3%
set in=%in:XL=4%
set in=%in:IX=5%
set in=%in:IV=6%
set i=1
set num=0
:r2a_loop
set tmp=%in:~0,1%
call set rom1=%%roman%i%%%
if "%tmp%"=="%rom1%" (
call set /a num+=arab%i%
set in=%in:~1%
) else (
set /a i+=1
)
if %i% gtr 13 goto :eof
if not "%in%"=="" goto r2a_loop
endlocal & set out=%num%
goto :eof
::Roman2Arab
:: qzwqzw http://bbs.cn-dos.net
:: 2007-01-03 Revision 2
:: 出處:http://www.cn-dos.net/forum/viewthread.php?tid=26230
@echo off
setlocal EnableDelayedExpansion
for /l %%i in (1,1,100) do (
set /a numin=!random!*4200/32768-100
set in=!numin!
set out=
call :Arab2Roman
set in=!out!
call :Roman2Arab
echo.%%i [!numin!:!in!:!out!]
if !numin! neq !out! set /p=--- Invalid ---
)
pause
endlocal
goto :eof
:Arab2Roman
setlocal EnableDelayedExpansion
set num=%in%
set /a tmp=num+0
if not "%num%"=="%tmp%" goto :eof
if %num% geq 4000 goto :eof
if %num% leq 0 goto :eof
set i=0
for %%v in (1000 900 500 400 100 90 50 40 10 9 5 4 1) do (
set /a i+=1
set arab!i!=%%v
)
set i=0
for %%v in (M CM D CD C XC L XL X IX V IV I) do (
set /a i+=1
set roman!i!=%%v
)
set i=1
:a2r_loop
call set tmp=%%arab%i%%%
if 1%num% lss 1%tmp% (
set /a i+=1
) else (
call set rom=%rom%%%roman%i%%%
set /a num-=tmp
)
if 1%num% gtr 10 goto a2r_loop
endlocal & set out=%rom%
goto :eof
::Arab2Roman
:Roman2Arab
setlocal EnableDelayedExpansion
echo.%in%|findstr /r "[^IVXLCDMivxlcdm]">nul && goto :eof
set i=0
for %%v in (1000 900 500 400 100 90 50 40 10 9 5 4 1) do (
set /a i+=1
set arab!i!=%%v
)
set i=0
for %%v in (M 1 D 2 C 3 L 4 X 5 V 6 I) do (
set /a i+=1
set roman!i!=%%v
)
set in=%in:m=M%
set in=%in:d=D%
set in=%in:c=C%
set in=%in:l=L%
set in=%in:x=X%
set in=%in:v=V%
set in=%in:i=I%
set in=%in:CM=1%
set in=%in:CD=2%
set in=%in:XC=3%
set in=%in:XL=4%
set in=%in:IX=5%
set in=%in:IV=6%
set i=1
set num=0
:r2a_loop
set tmp=%in:~0,1%
call set rom1=%%roman%i%%%
if "%tmp%"=="%rom1%" (
call set /a num+=arab%i%
set in=%in:~1%
) else (
set /a i+=1
)
if %i% gtr 13 goto :eof
if not "%in%"=="" goto r2a_loop
endlocal & set out=%num%
goto :eof
::Roman2Arab
相關文章
- 羅馬數字轉換阿拉伯數字(Java版,考慮較為全面)Java
- 阿拉伯-漢字-數字轉換
- 中文數字阿拉伯數字相互轉換
- LeetCode 13[羅馬數字轉整數]LeetCode
- python將中文數字轉化成阿拉伯數字Python
- LeetCode 力扣 羅馬數字轉整數LeetCode力扣
- PHP 阿拉伯數字和中文數字的相互轉換PHP
- 中文數字與阿拉伯數字:數字符號的文化交融符號
- 使用 Haskell 將十進位制數字轉成羅馬數字Haskell
- 羅馬數字轉換成十進位制
- leetcode13題——羅馬數字轉整數LeetCode
- [LeetCode] Integer to Roman 整數轉化成羅馬數字LeetCode
- [LeetCode] Roman to Integer 羅馬數字轉化成整數LeetCode
- 一種中文數字轉阿拉伯數字的解決方案
- 每日一道演算法:羅馬數字轉整數演算法
- LeetCode_Python(13)_羅馬數字轉整數LeetCodePython
- python-leetcode13羅馬數字轉整數PythonLeetCode
- 每日一道 LeetCode (4):羅馬數字轉整數LeetCode
- ip、數字的互轉
- 用Python實現阿拉伯數字轉換成中國漢字Python
- 阿拉伯數字金額轉漢語金額- Swift版本Swift
- Python將阿拉伯數字轉化為中文大寫Python
- 阿拉伯數字轉換成金額大寫金額(包括小數)
- LeetCode題庫13. 羅馬數字轉整數(c++實現)LeetCodeC++
- 【LeetCode】整數轉羅馬數字 C語言 | 此刻,已成藝術(bushi)LeetCodeC語言
- 演算法題:阿拉伯數字轉化為中文讀法演算法
- 使用C#實現阿拉伯數字到大寫中文的轉換 (轉)C#
- 每天一道演算法題系列十三之羅馬數字轉整數演算法
- 大小寫互換-"數字字串"轉換成數字字串
- string與數字相互轉換
- 沙烏地阿拉伯推出數字平臺Nusuk方便朝聖者
- Canvas與Image互轉Canvas
- Buffer 與 Mat 互轉
- QImage 與 Mat 互轉
- 製造業數字化轉型的核心:數字孿生與MBSE
- 阿拉伯人用阿拉伯數字嗎?——記一次用String#format格式化字串趟到的雷ORM字串
- 【數字化】傳統企業數字創新難題;數字化轉型與平臺戰略
- 加速金融業數字化轉型程式