Autor
|
Tema: [SNIPPET] Decimal a Romano (Leído 2,383 veces)
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Discutiendo con un amigo; la forma mas corta que se me ocurrio: Public Function DecToRoman(ByVal lNum As Long) As String DecToRoman = Choose(((lNum Mod 10) / 1) + 1, "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX") lNum = lNum - (lNum Mod 10) DecToRoman = Choose(((lNum Mod 100) / 10) + 1, "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC") & DecToRoman lNum = lNum - (lNum Mod 100) DecToRoman = String$((lNum \ 1000), "M") & Choose(((lNum Mod 1000) / 100) + 1, "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM") & DecToRoman End Function
Saludos
|
|
|
En línea
|
|
|
|
agus0
Desconectado
Mensajes: 360
|
✗ Gracias ✗
|
|
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Buena Karcrack, esta muy claro de entender. No te gusta más así? Public Function DecToRoman(ByVal lNum As Long) As String DecToRoman = Choose(((lNum Mod 10) / 1) + 1, "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX") lNum = lNum - (lNum Mod 10) If lNum Then DecToRoman = Choose(((lNum Mod 100) / 10) + 1, "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC") & DecToRoman lNum = lNum - (lNum Mod 100) If lNum Then DecToRoman = String$((lNum \ 1000), "M") & Choose(((lNum Mod 1000) / 100) + 1, "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM") & DecToRoman End If End If End Function
De esta manera si es el 7 o el 46 (por ej) no sigue comprobando. Por cierto y RomanToDec() que? DoEvents!
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Lo importante es hacerlo corto, no rapido ni nada similar En cuanto a RomanToDec... no tiene utilidad
|
|
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! Aunque no tenga utilidad, seguro alguien lo va a buscar y va a revivir el post asi que: RomanToDecimal: Private Function RomanToDecimal(RomNum As String) As String Dim VectorRom() As Integer 'Lo lleno con los valores de las letras Dim Tam As Integer 'Tamaño del numero Romano Dim X As Integer 'Para los Bucles Dim SumaRom As Integer 'Acumulador Tam = Len(RomNum) If Tam = 0 Then RomanToDecimal = 0 Exit Function End If ReDim VectorRom(1 To Tam) For X = 1 To Tam Select Case Mid$(RomNum, X, 1) Case "M": VectorRom(X) = 1000 Case "D": VectorRom(X) = 500 Case "C": VectorRom(X) = 100 Case "L": VectorRom(X) = 50 Case "X": VectorRom(X) = 10 Case "V": VectorRom(X) = 5 Case "I": VectorRom(X) = 1 End Select Next For X = 1 To Tam If X = Tam Then SumaRom = SumaRom + VectorRom(X) Else If VectorRom(X) >= VectorRom(X + 1) Then SumaRom = SumaRom + VectorRom(X) Else SumaRom = SumaRom - VectorRom(X) End If End If Next RomanToDecimal = CStr(SumaRom) End Function
GRACIAS POR LEER!!!
|
|
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ShellElevated [snippet]
Programación Visual Basic
|
cobein
|
0
|
1,208
|
15 Julio 2008, 12:37 pm
por cobein
|
|
|
[SNIPPET] GetTitleActiveApp (VB6)
« 1 2 »
Programación Visual Basic
|
The Swash
|
10
|
5,638
|
1 Abril 2010, 15:01 pm
por Karcrack
|
|
|
[Snippet]GetAdapterInfo
Programación Visual Basic
|
Mi4night
|
2
|
1,865
|
15 Julio 2010, 22:04 pm
por Mi4night
|
|
|
[Snippet]Suicide
Programación Visual Basic
|
Mi4night
|
1
|
1,996
|
27 Julio 2010, 10:48 am
por fary
|
|
|
[SNIPPET] IsPCode()?
Programación Visual Basic
|
Karcrack
|
0
|
1,432
|
3 Septiembre 2010, 18:01 pm
por Karcrack
|
|