Advertisement
Miquel_Fuster

Arabic to roman numbers

Sep 10th, 2022
1,538
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.97 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.     int numero, n_unidades, n_decenas, n_centenas, n_millares;
  5.     char *str_unidades, *str_decenas, *str_centenas, *str_millares;
  6.  
  7.     puts("Dijite un numero (1 - 3999):");
  8.     scanf("%i", &numero);
  9.    
  10.     if(numero < 1 || numero > 3999) {
  11.         puts("Fuera de rango (1 - 3999)");
  12.         return -1;
  13.     }
  14.  
  15.     n_unidades = numero%10; numero /= 10;
  16.     n_decenas  = numero%10; numero /= 10;
  17.     n_centenas = numero%10; numero /= 10;
  18.     n_millares = numero%10; numero /= 10;
  19.  
  20.     switch(n_millares) {
  21.         case 0: str_millares = "";      break;
  22.         case 1: str_millares = "M";     break;
  23.         case 2: str_millares = "MM";    break;
  24.         case 3: str_millares = "MMM";   break;
  25.     }
  26.  
  27.     switch(n_centenas) {
  28.         case 0: str_centenas = "";      break;
  29.         case 1: str_centenas = "C";     break;
  30.         case 2: str_centenas = "CC";    break;
  31.         case 3: str_centenas = "CCC";   break;
  32.         case 4: str_centenas = "CD";    break;
  33.         case 5: str_centenas = "D";     break;
  34.         case 6: str_centenas = "DC";    break;
  35.         case 7: str_centenas = "DCC";   break;
  36.         case 8: str_centenas = "DCCC";  break;
  37.         case 9: str_centenas = "CM";    break;
  38.     }
  39.  
  40.     switch(n_decenas) {
  41.         case 0: str_decenas = "";       break;
  42.         case 1: str_decenas = "X";      break;
  43.         case 2: str_decenas = "XX";     break;
  44.         case 3: str_decenas = "XXX";    break;
  45.         case 4: str_decenas = "XL";     break;
  46.         case 5: str_decenas = "L";      break;
  47.         case 6: str_decenas = "LX";     break;
  48.         case 7: str_decenas = "LXX";    break;
  49.         case 8: str_decenas = "LXXX";   break;
  50.         case 9: str_decenas = "XC";     break;
  51.     }
  52.  
  53.     switch(n_unidades) {
  54.         case 0: str_unidades = "";      break;
  55.         case 1: str_unidades = "I";     break;
  56.         case 2: str_unidades = "II";    break;
  57.         case 3: str_unidades = "III";   break;
  58.         case 4: str_unidades = "IV";    break;
  59.         case 5: str_unidades = "V";     break;
  60.         case 6: str_unidades = "VI";    break;
  61.         case 7: str_unidades = "VII";   break;
  62.         case 8: str_unidades = "VIII";  break;
  63.         case 9: str_unidades = "IX";    break;
  64.     }
  65.  
  66.     printf("%s%s%s%s", str_millares, str_centenas, str_decenas, str_unidades);
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement