#include <stdio.h>
#include <stdlib.h>
void montar_cadena(char * cadena,int numero,char *simbolo,char *simboloAux);
void pasar_romano(int,char *);
main()
{
int numero = -1;
char romano[25];
while(numero != 0)
{
puts("¿Que numero quiere pasar a romano?");
puts("0 para salir");
do
{
scanf("%d",&numero);
if(numero < 0) puts("El numero debe ser positivo");
}while(numero < 0);
pasar_romano(numero,romano);
printf("%d en numeros romanos es %s\n",numero,romano);
}
system("PAUSE");
}
void pasar_romano(int numero,char * romano)
{
int i, aux;
int miles,quinientos,cienes,cincuentas,dieces,cincos,unos;
strcpy(romano,"");
aux = numero;
miles = numero /1000;
aux = aux - miles*1000;
quinientos = aux /500;
aux = aux - quinientos*500;
cienes = aux /100;
aux = aux - cienes*100;
cincuentas = aux / 50;
aux = aux - cincuentas*50;
dieces = aux /10;
aux = aux - dieces*10;
cincos = aux / 5;
aux = aux - cincos*5;
unos = aux;
//printf("%d miles %d quinientos %d cienes %d cincuentas %d dieces %d cincos %d unos\n",miles,quinientos,cienes,cincuentas,dieces,cincos,unos);
montar_cadena(romano,miles,"M","");
if(cienes + 5*quinientos == 9)
montar_cadena(romano,1,"CM","");
else
{
montar_cadena(romano,quinientos,"D","");
montar_cadena(romano,cienes,"C","CD");
}
if(dieces + 5*cincuentas == 9)
montar_cadena(romano,1,"XC","");
else
{
montar_cadena(romano,cincuentas,"L","");
montar_cadena(romano,dieces,"X","XL");
}
if(unos + 5*cincos == 9)
montar_cadena(romano,1,"IX","");
else
{
montar_cadena(romano,cincos,"V","");
montar_cadena(romano,unos,"I","IV");
}
}
void montar_cadena(char * cadena,int numero,char *simbolo,char *simboloAux)
{
int i;
if(numero==4)
{
strcat(cadena,simboloAux);
}
else
{
for(i =0; i < numero;i++)
strcat(cadena,simbolo);
}
}