Titolo: Conversione da numero romano a numero arabo
Categoria: Codice |
|
Ultimo Aggiornamento: 25/10/05 |
Pubblichiamo di seguito una versione tradotta del metodo "MATH_RomainVersArabe" presente nella libreria Math4Dv2. il metodo prende come parametro una stringa in forma "romana" e restituisce l'equivalente in numeri arabi:
C_STRING(80;$1)
C_INTEGER($0;$risultatoArabo_L)
`inizializzazione
$numeroRomano_S:=$1
$risultatoArabo_L:=0
MATHERROR:=0
`calcolo
Repeat Case of : ($numeroRomano_S[[1]]="M")
$risultatoArabo_L:=$risultatoArabo_L+1000
$numeroRomano_S:=Substring($numeroRomano_S;2)
: ($numeroRomano_S[[1]]="D")
$risultatoArabo_L:=$risultatoArabo_L+500
$numeroRomano_S:=Substring($numeroRomano_S;2)
: ($numeroRomano_S[[1]]="C")
Case of : (Length($numeroRomano_S)=1)
$risultatoArabo_L:=$risultatoArabo_L+100
$numeroRomano_S:=""
: ($numeroRomano_S[[2]]="M")
$risultatoArabo_L:=$risultatoArabo_L+900
$numeroRomano_S:=Substring($numeroRomano_S;3)
: ($numeroRomano_S[[2]]="D")
$risultatoArabo_L:=$risultatoArabo_L+400
$numeroRomano_S:=Substring($numeroRomano_S;3)
Else $risultatoArabo_L:=$risultatoArabo_L+100
$numeroRomano_S:=Substring($numeroRomano_S;2)
End case : ($numeroRomano_S[[1]]="L")
$risultatoArabo_L:=$risultatoArabo_L+50
$numeroRomano_S:=Substring($numeroRomano_S;2)
: ($numeroRomano_S[[1]]="X")
Case of : (Length($numeroRomano_S)=1)
$risultatoArabo_L:=$risultatoArabo_L+10
$numeroRomano_S:=""
: ($numeroRomano_S[[2]]="C")
$risultatoArabo_L:=$risultatoArabo_L+90
$numeroRomano_S:=Substring($numeroRomano_S;3)
: ($numeroRomano_S[[2]]="L")
$risultatoArabo_L:=$risultatoArabo_L+40
$numeroRomano_S:=Substring($numeroRomano_S;3)
Else $risultatoArabo_L:=$risultatoArabo_L+10
$numeroRomano_S:=Substring($numeroRomano_S;2)
End case : ($numeroRomano_S[[1]]="V")
$risultatoArabo_L:=$risultatoArabo_L+5
$numeroRomano_S:=Substring($numeroRomano_S;2)
: ($numeroRomano_S[[1]]="I")
Case of : (Length($numeroRomano_S)=1)
$risultatoArabo_L:=$risultatoArabo_L+1
$numeroRomano_S:=""
: ($numeroRomano_S[[2]]="X")
$risultatoArabo_L:=$risultatoArabo_L+9
$numeroRomano_S:=Substring($numeroRomano_S;3)
: ($numeroRomano_S[[2]]="V")
$risultatoArabo_L:=$risultatoArabo_L+4
$numeroRomano_S:=Substring($numeroRomano_S;3)
Else $risultatoArabo_L:=$risultatoArabo_L+1
$numeroRomano_S:=Substring($numeroRomano_S;2)
End case Else MATHERROR:=-1 `numero inesistente
$numeroRomano_S:=""
$risultatoArabo_L:=0
End case Until ($numeroRomano_S="")
$0:=$risultatoArabo_L
Autori, redattori e collaboratori per Math4Dv2:
Jacques Bossy
Philip Burns
Olivier Deschanels
Marc Duc-Jacquet
Bernard Escaich
Antoine Galmiche
Micaël Germann
Teddy Linet
Frédéric Quoirez
Michel Saiz
Robert Van Loo
Inviato da: PierPaolo Sichera |
|
Visite: 16427 |
Se accedi con utente e password, puoi aggiungere dei commenti.