Vlad5080

С++ перевод из римских

Jan 6th, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.56 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. void converter() {
  7.     //переменные
  8.     string line;
  9.     char buff[100];
  10.     char err[100];
  11.     for (int i = 0; i < 100; i++) {
  12.         buff[i] = NULL;
  13.     }
  14.     int chetdef = 0;
  15.  
  16.     int chetchik = 0;
  17.     cout << "Введите ваше римское число\n -";
  18.     cin.getline(buff, 100);
  19.  
  20.     for (int i = 0; i < 100; i++)
  21.     {
  22.         if (buff[i] == NULL) continue;
  23.  
  24.         switch (buff[i]) {
  25.         case 'I':
  26.             if (i + 1 < strlen(buff) && (buff[i + 1] == 'V' || buff[i + 1] == 'X' || buff[i + 1] == 'C')) {
  27.                 chetchik = chetchik - 1;
  28.             }
  29.             else if (i + 1 < strlen(buff) && (buff[i + 1] == 'I' && buff[i + 2] == 'I' && buff[i + 3] == 'I' )) {
  30.                 cout << "ERROR" << endl;
  31.             }
  32.             else chetchik = chetchik + 1;
  33.             break;
  34.         case 'V':
  35.             if (i + 1 < strlen(buff) && (buff[i + 1] != 'V')) {
  36.  
  37.             }
  38.             chetchik = chetchik + 5;
  39.  
  40.             break;
  41.         case 'X':
  42.             if (i + 1 < strlen(buff) && (buff[i + 1] == 'L' || buff[i + 1] == 'C' || buff[i + 1] == 'M')) {
  43.                 chetchik = chetchik - 10;
  44.             }
  45.             else if (i + 1 < strlen(buff) && (buff[i + 1] == 'X' && buff[i + 2] == 'X' && buff[i + 3] == 'X' && buff[i + 4] == 'X')) {
  46.                 cout << "ERROR" << endl;
  47.             }
  48.             else chetchik = chetchik + 10;
  49.             break;
  50.         case 'L':if (i + 1 < strlen(buff) && (buff[i + 1] == 'L')) {
  51.             cout << "ERROR" << endl;
  52.         }
  53.                 else chetchik = chetchik + 50;
  54.  
  55.             break;
  56.         case 'C':
  57.             if (i + 1 < strlen(buff) && (buff[i + 1] == 'D' || buff[i + 1] == 'M')) {
  58.                 chetchik = chetchik - 100;
  59.             }
  60.             else if (i + 1 < strlen(buff) && (buff[i + 1] == 'C' && buff[i + 2] == 'C' && buff[i + 3] == 'C' && buff[i + 4] == 'C')) {
  61.                 cout << "ERROR" << endl;
  62.             }
  63.             else chetchik = chetchik + 100;
  64.             break;
  65.         case 'D':
  66.              if (i + 1 < strlen(buff) && (buff[i + 1] == 'D')) {
  67.                 cout << "ERROR" << endl;
  68.             }
  69.              else chetchik = chetchik + 500;
  70.  
  71.             break;
  72.         case 'M':
  73.             chetchik = chetchik + 1000;
  74.  
  75.  
  76.  
  77.             break;
  78.         default: err[chetdef] = buff[i]; chetdef++;
  79.             break;
  80.  
  81.         }
  82.         // LL NO; VV NO ; CCCCC NO; DD NO;
  83.  
  84.     }
  85.     cout << "Числа не прошедшие обработку:\n -";
  86.  
  87.     for (int i = 0; i < chetdef; i++) {
  88.         if (chetdef > 0) {
  89.             cout << err[i] << " ";
  90.         }
  91.         else cout << "Все числа прошли обработку";
  92.  
  93.     }
  94.     cout << endl;
  95.     if (chetchik == 0) {
  96.         cout << "Вы не ввели число для перевода" << endl;
  97.     }
  98.     else {
  99.         cout << "Ваше арабское число\n -" << chetchik << endl;
  100.     }
  101.  
  102. }
  103. int main() {
  104.     setlocale(0, "rus");
  105.  
  106.     converter();
  107.  
  108.     system("pause");
  109.     return 0;
  110. }
Add Comment
Please, Sign In to add comment