Escriba un programa que convierta un entero positivo en un
número romano. Asuma que los números a convertir son
menores a 3500. Las reglas para construir un número
romano son las que siguen.
En el sistema de números romanos, i es el símbolo para 1,
v para 5, x para 10, l para 50, c para 100, d para 500 y m
para 1000. Los símbolos con un valor grande usualmente
aparecen antes que los símbolos de temor valor. El valor de
un número romano es, en general, la suma de los valores
de los símbolos. Por ejemplo, ii es 2, viii es 8. Sin embargo,
si un símbolo de menor valor aparece antes de un símbolo
de mayor valor, el valor de los dos símbolos es la diferencia
de los dos valores. Pro ejemplo, iv es 4, ix es 9, y lix es 59.
Note que no hay cuatro símbolos consecutivos iguales. Por
ejemplo, iv, pero no iiii, es el número 4. Los números
romanos construidos de esta forma pueden no ser únicos.
Por ejemplo, ambos mcmxc y mxm son validos para 1990.
Aunque el número romano generado por su programa no
debe necesariamente ser el más corto, nunca use vv para
10, ll para 100, dd para 1000, o vvv para 15, etc.
Entrada
La entrada consistirá en una serie de líneas, cada línea
conteniendo un entero x. La entrada terminará cuando la
línea tenga un 0.
Salida
Por cada número, imprima el número en decimal y en forma
romana.
Ejemplo de entrada
38
172
4
1990
50
Ejemplo de Salida
3 iii
8 viii
172 clxxii
4 iv
1990 mcmxc
5 v
solucion
#include<stdio.h>
int main(){
int x, i;
int Vn[13]={ 1000, 900, 500, 400,
100, 90, 50, 40,
10, 9, 5, 4, 1 };
char *Vc[13]={"m","cm","d","cd",
"c","xc","l","xl",
"x","ix","v","iv","i"};
while( 1 ){
scanf( "%d", &x );
if( x==0 )
break;
printf( "%-4d ", x);
i = 0;
while( x>0 ){
if( x>=Vn ){
printf( "%s", Vc );
x = x - Vn;
}
else
i++;
}
printf( "n" );
}
return 0;
}
número romano. Asuma que los números a convertir son
menores a 3500. Las reglas para construir un número
romano son las que siguen.
En el sistema de números romanos, i es el símbolo para 1,
v para 5, x para 10, l para 50, c para 100, d para 500 y m
para 1000. Los símbolos con un valor grande usualmente
aparecen antes que los símbolos de temor valor. El valor de
un número romano es, en general, la suma de los valores
de los símbolos. Por ejemplo, ii es 2, viii es 8. Sin embargo,
si un símbolo de menor valor aparece antes de un símbolo
de mayor valor, el valor de los dos símbolos es la diferencia
de los dos valores. Pro ejemplo, iv es 4, ix es 9, y lix es 59.
Note que no hay cuatro símbolos consecutivos iguales. Por
ejemplo, iv, pero no iiii, es el número 4. Los números
romanos construidos de esta forma pueden no ser únicos.
Por ejemplo, ambos mcmxc y mxm son validos para 1990.
Aunque el número romano generado por su programa no
debe necesariamente ser el más corto, nunca use vv para
10, ll para 100, dd para 1000, o vvv para 15, etc.
Entrada
La entrada consistirá en una serie de líneas, cada línea
conteniendo un entero x. La entrada terminará cuando la
línea tenga un 0.
Salida
Por cada número, imprima el número en decimal y en forma
romana.
Ejemplo de entrada
38
172
4
1990
50
Ejemplo de Salida
3 iii
8 viii
172 clxxii
4 iv
1990 mcmxc
5 v
solucion
#include<stdio.h>
int main(){
int x, i;
int Vn[13]={ 1000, 900, 500, 400,
100, 90, 50, 40,
10, 9, 5, 4, 1 };
char *Vc[13]={"m","cm","d","cd",
"c","xc","l","xl",
"x","ix","v","iv","i"};
while( 1 ){
scanf( "%d", &x );
if( x==0 )
break;
printf( "%-4d ", x);
i = 0;
while( x>0 ){
if( x>=Vn ){
printf( "%s", Vc );
x = x - Vn;
}
else
i++;
}
printf( "n" );
}
return 0;
}