Превръща Арабско число в Римско

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char *roman(char p, int l);
  5.    
  6. int main()
  7. {
  8.     char rim[32] = "";
  9.     char number[5];
  10.     printf("Vavedete chislo mejdu 1 i 3999: ");
  11.     scanf("%s", number);
  12.  
  13.     int p = 0;
  14.     int len = strlen(number);
  15.     while (len > 0)
  16.     {
  17.         char digit = number[p];
  18.         char *a = roman(digit, len);
  19.         strcat(rim, a);
  20.         len--;
  21.         p++;
  22.     }
  23.  
  24.     printf("%s\n", rim);
  25.     return 0;
  26. }
  27.  
  28. char *roman(char p, int l)
  29. {
  30.     if (l == 1)
  31.     {
  32.         switch(p)
  33.         {
  34.             case 1 : return "I";
  35.             case 2 : return "II";
  36.             case 3 : return "III";
  37.             case 4 : return "IV";
  38.             case 5 : return "V";
  39.             case 6 : return "VI";
  40.             case 7 : return "VII";
  41.             case 8 : return "VIII";
  42.             case 9 : return "IX";
  43.             default:
  44.                 return "";
  45.         }
  46.     }
  47.     else if (l == 2)
  48.     {
  49.         switch(p)
  50.         {
  51.             case 1 : return "X";
  52.             case 2 : return "XX";
  53.             case 3 : return "XXX";
  54.             case 4 : return "XL";
  55.             case 5 : return "L";
  56.             case 6 : return "LX";
  57.             case 7 : return "LXX";
  58.             case 8 : return "LXXX";
  59.             case 9 : return "XC";
  60.             default:
  61.                 return "";
  62.         }
  63.     }
  64.     else if(l == 3)
  65.     {
  66.         switch(p)
  67.         {
  68.             case 1 : return "C";
  69.             case 2 : return "CC";
  70.             case 3 : return "CCC";
  71.             case 4 : return "CD";
  72.             case 5 : return "D";
  73.             case 6 : return "DC";
  74.             case 7 : return "DCC";
  75.             case 8 : return "DCCC";
  76.             case 9 : return "CM";
  77.             default:
  78.                 return "";
  79.         }
  80.     }
  81.     else if (l == 4)
  82.     {
  83.         switch(p)
  84.         {
  85.             case 1 : return "M";
  86.             case 2 : return "MM";
  87.             case 3 : return "MMM";
  88.             default:
  89.                 return "";
  90.         }
  91.     }  
  92. }