Advertisement
DMG

Rimski brojevi (O)

DMG
Apr 1st, 2013
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.37 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int rim_dek (string a)
  5. {
  6.     a = a + " ";
  7.     string k = "";
  8.     int s = 0;
  9.     for (int i=0; i<a.length()-1; i++)
  10.     {
  11.         k = k + a[i];
  12.         k = k + a[i+1];
  13.         if (k=="IV")
  14.         {s = s + 4; i++;}
  15.         else if (k=="IX")
  16.         {s = s + 9; i++;}
  17.         else if (k=="XL")
  18.         {s = s + 40; i++;}
  19.         else if (k=="XC")
  20.         {s = s + 90; i++;}
  21.         else if (k=="CD")
  22.         {s = s + 400; i++;}
  23.         else if (k=="CM")
  24.         {s = s + 900; i++;}
  25.         else if (k=="IM")
  26.         {s = s + 999; i++;}
  27.         else if (k=="XM")
  28.         {s = s + 990; i++;}
  29.         else
  30.         {
  31.             switch (a[i])
  32.             {
  33.             case 'I': s = s + 1; break;
  34.             case 'V': s = s + 5; break;
  35.             case 'X': s = s + 10; break;
  36.             case 'L': s = s + 50; break;
  37.             case 'C': s = s + 100; break;
  38.             case 'D': s = s + 500; break;
  39.             case 'M': s = s + 1000; break;
  40.             }
  41.         }
  42.         k="";
  43.     }
  44.            
  45.     return s;
  46. }
  47.  
  48. string dek_rim (int a)
  49. {
  50.        string s = "";
  51.    
  52.        while (a>=1000) { s = s + "M"; a = a - 1000; }
  53.        while (a>=999) { s = s + "IM"; a = a - 999; }
  54.        while (a>=990) { s = s + "XM"; a = a - 990; }
  55.        while (a>=900) { s = s + "CM"; a = a - 900; }
  56.        while (a>=500) { s = s + "D"; a = a - 500; }
  57.        while (a>=400) { s = s + "CD"; a = a - 400; }
  58.        while (a>=100) { s = s + "C"; a = a - 100; }
  59.        while (a>=90) { s = s + "XC"; a = a - 90; }
  60.        while (a>=50) { s = s + "L"; a = a - 50; }
  61.        while (a>=40) { s = s + "XL"; a = a - 40; }
  62.        while (a>=10) { s = s + "X"; a = a - 10; }
  63.        while (a>=9) { s = s + "IX"; a = a - 9; }
  64.        while (a>=5) { s = s + "V"; a = a - 5; }
  65.        while (a>=4) { s = s + "IV"; a = a - 4; }
  66.        while (a>=1) { s = s + "I"; a = a - 1; }  
  67.  
  68.        return s;
  69. }
  70.  
  71. main()
  72. {
  73.       int n;
  74.       string s[101];
  75.      
  76.       cin >> n;
  77.       for (int i=1; i<=n; i++)
  78.           cin >> s[i];
  79.          
  80.       if (n%2==1)
  81.          n = n - 1;
  82.          
  83.       for (int i=1; i<=n; i=i+2)
  84.       {
  85.           int a = rim_dek(s[i]) + rim_dek(s[i+1]);
  86.           if (a<3999)
  87.               cout << dek_rim(a) << endl;
  88.           else
  89.               cout << "Prekoracenje" << endl;
  90.       }
  91.  
  92.       system("PAUSE");      
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement