Aplicación que transforme un número entre 1 y 2000, ambos inclusive a numeración romana
En esta segunda opción se recoge el dato como una cadena de caracteres, y para facilitar el procesamiento de los datos se añaden ceros por la izquierda, para asegurar que el caracter que esté en la última posición sea el correspondiente a las unidades.
Enlace a CodePad
http://codepad.org/GL9UCc52
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Código Fuente
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#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; }
No hay comentarios:
Publicar un comentario