Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.21 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace romenumbers
  8. {
  9.     class Program
  10.     {
  11.         static bool sravnenie(char a, char b)//метод
  12.         {
  13.             int a_ = 0, b_ = 0;
  14.  
  15.             char[] ch = { 'I', 'V', 'X','L','C','D','M' };//массив char из римских цифр по возростанию соответственно
  16.  
  17.             for (int i = 0; i < ch.Length; i++)//проходим массив, и определяем, какие элементы переданы
  18.             {
  19.                 if (a == ch[i])
  20.                     a_ = i;
  21.                 if (b == ch[i])
  22.                     b_ = i;
  23.  
  24.             }
  25.  
  26.             //по индексам определяем, какой элемент больше
  27.             if (a_ > b_)
  28.             {
  29.                 return false;//значит слкдующий элемент меньше, значит вычитаем
  30.             }
  31.             else
  32.             {
  33.                 return true;//равен или больше
  34.             }
  35.         }
  36.  
  37.         static void Main(string[] args)
  38.         {
  39.             Console.Write("Введите римскую цифру: ");
  40.             string rome = Console.ReadLine(); //римская цифра в виде строки
  41.             char[] ch = rome.ToCharArray();//строку в массив char
  42.             int arabian = 0;//результат
  43.             char a = 'I';//символ, с которым прверять будем
  44.             bool b;//критерий проверки
  45.  
  46.             for (int i = ch.Length - 1; i > -1; i--)//проходим массив, т е каждый элемент числа, с конца массива
  47.             {
  48.                 if (i == ch.Length - 1)//если элемент первый (т е последний в чсле), то просто проибавляем
  49.                 {
  50.                     switch (ch[i])
  51.                     {
  52.                         case 'I':
  53.                             arabian++;
  54.                             break;
  55.                         case 'V':
  56.                             arabian = arabian + 5;
  57.                             break;
  58.                         case 'X':
  59.                             arabian = arabian + 10;
  60.                             break;
  61.                         case 'L':
  62.                             arabian = arabian + 50;
  63.                             break;
  64.                         case 'C':
  65.                             arabian = arabian + 100;
  66.                             break;
  67.                         case 'D':
  68.                             arabian = arabian + 500;
  69.                             break;
  70.                         case 'M':
  71.                             arabian = arabian + 1000;
  72.                             break;
  73.                         default: break;
  74.                     }
  75.                     a = ch[i];//запоминаем первый элемент
  76.                 }
  77.                 else//если элемент не первый
  78.                 {
  79.                     b = sravnenie(a, ch[i]);// обращаемся к методу, который определяет, больше, меньше или равен следующий элемент предыдущего
  80.                     // в метод отправляем текущий элемент и предыдущий
  81.  
  82.                     if (b == true)// прибавляем
  83.                     {
  84.                         switch (ch[i])
  85.                         {
  86.                             case 'I':
  87.                                 arabian++;
  88.                                 break;
  89.                             case 'V':
  90.                                 arabian = arabian + 5;
  91.                                 break;
  92.                             case 'X':
  93.                                 arabian = arabian + 10;
  94.                                 break;
  95.                             case 'L':
  96.                                 arabian = arabian + 50;
  97.                                 break;
  98.                             case 'C':
  99.                                 arabian = arabian + 100;
  100.                                 break;
  101.                             case 'D':
  102.                                 arabian = arabian + 500;
  103.                                 break;
  104.                             case 'M':
  105.                                 arabian = arabian + 1000;
  106.                                 break;
  107.                             default: break;
  108.                         }
  109.                         a = ch[i];//запаоминаем текущий элемент
  110.                     }
  111.                     if (b == false)//отнимаем
  112.                     {
  113.                         switch (ch[i])
  114.                         {
  115.                             case 'I':
  116.                                 arabian--;
  117.                                 break;
  118.                             case 'V':
  119.                                 arabian = arabian - 5;
  120.                                 break;
  121.                             case 'X':
  122.                                 arabian = arabian - 10;
  123.                                 break;
  124.                             case 'L':
  125.                                 arabian = arabian - 50;
  126.                                 break;
  127.                             case 'C':
  128.                                 arabian = arabian - 100;
  129.                                 break;
  130.                             case 'D':
  131.                                 arabian = arabian - 500;
  132.                                 break;
  133.                             case 'M':
  134.                                 arabian = arabian - 1000;
  135.                                 break;
  136.                             default: break;
  137.                         }
  138.                         //тут не запоминаем текущий элемент, так как могут идти несколько III, например IIX
  139.                     }
  140.  
  141.                 }
  142.  
  143.                
  144.  
  145.             }
  146.             Console.WriteLine("Result: ");//Вывод результата
  147.             Console.WriteLine(arabian);
  148.         }
  149.        
  150.     }
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement