#include <stdio.h>
#include <stdlib.h>
int main()
{
/*Programa que convierte un número entero entre 1 y 2000 (ambos incluidos)
a numeración romana.
Realizado por: vicente Arosa de la Fuente
curso: Programador de Aplicaciones Informáticas (pai-torneiros)
*/
char unidades=1, decenas=2, centenas=3, millares=4;
char dato_teclado [5], dato_auxiliar [5];
printf("Introduce un numero entero, entre 1 y 2000 (ambos inclusive), y te lo mostrare en numeros romanos: ");
//Se recoge el dato en una cadena de caracteres
scanf ("%s", dato_auxiliar);
//Inicializamos dato_teclado a una cadena vacia
strcpy (dato_teclado, "");
//Añadimos un cero por cada dígito que falte para tener 4 digitos en total
if (strlen(dato_auxiliar)==3) strcat (dato_teclado, "0");
if (strlen(dato_auxiliar)==2) strcat (dato_teclado, "00");
if (strlen(dato_auxiliar)==1) strcat (dato_teclado, "000");
//al llegar a este punto tenemos una cadena de caracteres con 4 caracteres
//con las unidades de millar, centenas, decenas y unidades en sus posiciones
strcat (dato_teclado, dato_auxiliar);
//para pasar un caracter a numero, basta con restar el código ASCII del
//caracter 0 al caracter deseado, '8' - '0' = '8' - 48 = 56 - 48 = 8
millares = dato_teclado [0] - 48;
centenas = dato_teclado [1] - 48;
decenas = dato_teclado [2] - 48;
unidades = dato_teclado [3] - 48;
switch (millares)
{
case 1:
printf("M");
break;
case 2:
printf("MM");
break;
default:
break;
}
switch (centenas)
{
case 1:
printf("C");
break;
case 2:
printf("CC");
break;
case 3:
printf("CCC");
break;
case 4:
printf("CD");
break;
case 5:
printf("D");
break;
case 6:
printf("DC");
break;
case 7:
printf("DCC");
break;
case 8:
printf("DCCC");
break;
case 9:
printf("CM");
break;
default:
break;
}
switch (decenas)
{
case 1:
printf("X");
break;
case 2:
printf("XX");
break;
case 3:
printf("XXX");
break;
case 4:
printf("XL");
break;
case 5:
printf("L");
break;
case 6:
printf("LX");
break;
case 7:
printf("LXX");
break;
case 8:
printf("LXX");
break;
case 9:
printf("XC");
break;
default:
break;
}
switch (unidades)
{
case 1:
printf("I");
break;
case 2:
printf("II");
break;
case 3:
printf("III");
break;
case 4:
printf("IV");
break;
case 5:
printf("V");
break;
case 6:
printf("VI");
break;
case 7:
printf("VII");
break;
case 8:
printf("VIII");
break;
case 9:
printf("IX");
break;
default:
break;
}
return 0;
}