hola a todos.... comparto este codigo para convertir números del 1 al 3999 en números romanos
maneja solo ese rango por un problema con la tipografía que no me permite de mas salvo que me invente mi propios carácteres.
Algoritmoromanos///definevariablesDefinirnumComoEntero;DefinirbuscaComoEntero;DefinircontComoEntero;DefinirmComoEntero;///millarDefinircComoEntero;///centenaDefinirdComoEntero;///decenaDefiniruComoEntero;///unidadDefinirmilComoCaracter;DefinircienComoCaracter;DefinirdiezComoCaracter;DefinirunidComoCaracter;DefinirresultadoComoCaracter;DefinirterminaComoLogico;DefinircorrectoComoLogico;///asignavectoresalasvariablesmil="M,MM,MMM";cien="C,CC,CCC,CD,D,DC,DCC,DCCC,CM";diez="X,XX,XXX,XL,L,LX,LXX,LXXX,XC";unid="I,II,III,IV,V,VI,VII,VIII,IX";///variblestermina=Falso;Repetircorrecto=Falso;Mientras!correctoHacerBorrarPantalla;resultado="";Escribir" ";Escribir" CONVERTIDOR DE NUMEROS ROMANOS ";Escribir" ";///numeromaximoesel3999EscribirSinSaltar" Escriba un numero de 4 cifras (3999 - para salir): ";leernum;///controlaqueestedentrodelrangosinum==3999Entoncescorrecto=Verdadero;termina=Verdadero;FinSisinum>=1&num<=3999Entoncescorrecto=Verdadero;SiNoEscribir" Numero no valido, intente nuevamente ";Escribir" toque una tecla para continuar ";EsperarTecla;FinSiFinMientras///separapormillar,centena,decena,unidadm=(num%10000-num%1000)/1000;c=(num%1000-num%100)/100;d=(num%100-num%10)/10;u=num%10;///buscadentrodelosvectores///millarcont=1;parabusca=1HastaLongitud(mil)ConPaso1HacersiSubcadena(mil,busca,busca)==","Entoncescont=cont+1;SiNosicont==mEntoncesresultado=resultado+Subcadena(mil,busca,busca);FinSiFinSiFinPara///centenacont=1;parabusca=1HastaLongitud(cien)ConPaso1HacersiSubcadena(cien,busca,busca)==","Entoncescont=cont+1;SiNosicont==cEntoncesresultado=resultado+Subcadena(cien,busca,busca);FinSiFinSiFinPara///decenacont=1;parabusca=1HastaLongitud(diez)ConPaso1HacersiSubcadena(diez,busca,busca)==","Entoncescont=cont+1;SiNosicont==dEntoncesresultado=resultado+Subcadena(diez,busca,busca);FinSiFinSiFinPara///unidadcont=1;parabusca=1HastaLongitud(unid)ConPaso1HacersiSubcadena(unid,busca,busca)==","Entoncescont=cont+1;SiNosicont==uEntoncesresultado=resultado+Subcadena(unid,busca,busca);FinSiFinSiFinPara///imprimeEscribir" EN NUMEROS ROMANOS SERIA ",resultado;Escribir" Toque una tecla para continuar ";EsperarTecla;MientrasQue!terminaEscribir" Gracias por jugar con CoDo&CoDo.";FinAlgoritmo
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2023-04-16
Hola, Muy interesante, no conocía que solo se puede con los caracteres latinos estándares codificar hasta el 3999, pero se puede utilizar caracteres latinos extendidos, esto es con tildes para representar los faltantes y mejorar el algoritmo anterior
Romano Decimal Nominación
(miles)
Ѷ 5000 cinco mil
Ӝ 10 000 diez mil
Ĺ 50 000 cincuenta mil
Ć 100 000 cien mil
Ď 500 000 quinientos mil
Ḿ 1 000 000 un millón
En unicode también se definen algunos números romanos como un único símbolo, pero creo que el editor de texto de PSeInt aun no soporta UNICODE SYMBOLS, esperemos que en próximas actualizaciones se actualice scintilla
Ⅰ
Ⅱ
Ⅲ
Ⅳ
Ⅴ
Ⅵ
Ⅶ
Ⅷ
Ⅸ
Ⅹ
Ⅺ
Ⅻ
ⅰ
ⅱ
ⅲ
ⅳ
ⅴ
ⅵ
ⅶ
ⅷ
ⅸ
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
hola a todos.... comparto este codigo para convertir números del 1 al 3999 en números romanos
Hola, Muy interesante, no conocía que solo se puede con los caracteres latinos estándares codificar hasta el 3999, pero se puede utilizar caracteres latinos extendidos, esto es con tildes para representar los faltantes y mejorar el algoritmo anterior
Romano Decimal Nominación
(miles)
Ѷ 5000 cinco mil
Ӝ 10 000 diez mil
Ĺ 50 000 cincuenta mil
Ć 100 000 cien mil
Ď 500 000 quinientos mil
Ḿ 1 000 000 un millón
En unicode también se definen algunos números romanos como un único símbolo, pero creo que el editor de texto de PSeInt aun no soporta UNICODE SYMBOLS, esperemos que en próximas actualizaciones se actualice scintilla
Ⅰ
Ⅱ
Ⅲ
Ⅳ
Ⅴ
Ⅵ
Ⅶ
Ⅷ
Ⅸ
Ⅹ
Ⅺ
Ⅻ
ⅰ
ⅱ
ⅲ
ⅳ
ⅴ
ⅵ
ⅶ
ⅷ
ⅸ