C/Visual C - convertir decimales a romanos

 
Vista:

convertir decimales a romanos

Publicado por Carlos Vilanova (10 intervenciones) el 19/05/2006 23:15:27
hola, me preguntaba si alguien podria postear el codigo para transformar decimales a romanos usando funciones, pero sin usar los elementos cout y cin de la libreria iostream.h, si no que usar los basicos printf y scanf,

les agradesco desde ya...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:convertir decimales a romanos

Publicado por fernando.gomez (1603 intervenciones) el 20/05/2006 00:32:49
Los números romanos son números naturales, no decimales; que yo sepa no hay representación de 4.3 como IV.III...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:convertir decimales a romanos

Publicado por x (63 intervenciones) el 20/05/2006 16:49:00
lo mas probable es que se haya equivocado, pero... hay cada maestro, asi que quien tiene la culpa? yo de pendejo pon andar poniendo atencion...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:convertir decimales a romanos

Publicado por aek (1 intervención) el 05/06/2006 03:38:29
esta hecho en c++ porque me era mas comodo usar el AnsiString (String)
cualquier duda o sugerencia enviar a [email protected]

String ConvertInt(int num)
{
String txt="";
if(num<=3999)
{
while(num>=1000){num-=1000;txt+="M";}
while(num>=900) {num-=900; txt+="CM";}
while(num>=500) {num-=500; txt+="D";}
while(num>=400) {num-=400; txt+="CD";}
while(num>=100) {num-=100; txt+="C";}
while(num>=90) {num-=90; txt+="XC";}
while(num>=50) {num-=50; txt+="L";}
while(num>=40) {num-=40; txt+="XL";}
while(num>=10) {num-=10; txt+="X";}
while(num>=9) {num-=9; txt+="IX";}
while(num>=5) {num-=5; txt+="V";}
while(num>=4) {num-=4; txt+="IV";}
while(num>=1) {num-=1; txt+="I";}
return txt;
}
else
// desarrollado por aek ([email protected])
return "Out of Range";
};

int ConvertRom(String txt)
{
int last=0;
int num=0;

for(int i=1;i<txt.Length();i++)
{
if(txt[i]=='M'){num+=1000;last=1;}
else
if(txt[i]=='D'){num+=500;last=2;}
else
if(txt[i]=='C'){
if(txt[i+1]=='M'){num+=900;i++;last=3;}
else
if(txt[i+1]=='D'){num+=400;i++;last=4;}
else
{num+=100;last=5;}
}else
if(txt[i]=='L'){num+=50;last=6;}
else
if(txt[i]=='X'){
if(txt[i+1]=='C'){num+=90;i++;last=7;}
else
if(txt[i+1]=='L'){num+=40;i++;last=8;}
else
{num+=10;last=9;}
}
else
if(txt[i]=='V'){num+=5;last=10;}
else
if(txt[i]=='I'){
if(txt[i+1]=='X'){num+=9;i++;last=11;}
else
if(txt[i+1]=='V'){num+=4;i++;last=12;}
else
{num+=1;last=13;}
}else
return -1;
}
if(last!=3 && last!=4 && last!=7 && last!=8 && last!=11 && last!=12){
int i=txt.Length();
if(txt[i]=='M' && last<=1) num+=1000; else
if(txt[i]=='D' && last<=2) num+=500; else
if(txt[i]=='C' && last<=5) num+=100; else
if(txt[i]=='L' && last<=6) num+=50; else
if(txt[i]=='X' && last<=9) num+=10; else
if(txt[i]=='V' && last<=10) num+=5; else
if(txt[i]=='I' && last<=13) num+=1; else
return -1;
}
// desarrollado por aek ([email protected])
if(txt!=ConvertInt(num))
return -1;

return num;
};
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar