Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace romenumbers
- {
- class Program
- {
- static bool sravnenie(char a, char b)//метод
- {
- int a_ = 0, b_ = 0;
- char[] ch = { 'I', 'V', 'X','L','C','D','M' };//массив char из римских цифр по возростанию соответственно
- for (int i = 0; i < ch.Length; i++)//проходим массив, и определяем, какие элементы переданы
- {
- if (a == ch[i])
- a_ = i;
- if (b == ch[i])
- b_ = i;
- }
- //по индексам определяем, какой элемент больше
- if (a_ > b_)
- {
- return false;//значит слкдующий элемент меньше, значит вычитаем
- }
- else
- {
- return true;//равен или больше
- }
- }
- static void Main(string[] args)
- {
- Console.Write("Введите римскую цифру: ");
- string rome = Console.ReadLine(); //римская цифра в виде строки
- char[] ch = rome.ToCharArray();//строку в массив char
- int arabian = 0;//результат
- char a = 'I';//символ, с которым прверять будем
- bool b;//критерий проверки
- for (int i = ch.Length - 1; i > -1; i--)//проходим массив, т е каждый элемент числа, с конца массива
- {
- if (i == ch.Length - 1)//если элемент первый (т е последний в чсле), то просто проибавляем
- {
- switch (ch[i])
- {
- case 'I':
- arabian++;
- break;
- case 'V':
- arabian = arabian + 5;
- break;
- case 'X':
- arabian = arabian + 10;
- break;
- case 'L':
- arabian = arabian + 50;
- break;
- case 'C':
- arabian = arabian + 100;
- break;
- case 'D':
- arabian = arabian + 500;
- break;
- case 'M':
- arabian = arabian + 1000;
- break;
- default: break;
- }
- a = ch[i];//запоминаем первый элемент
- }
- else//если элемент не первый
- {
- b = sravnenie(a, ch[i]);// обращаемся к методу, который определяет, больше, меньше или равен следующий элемент предыдущего
- // в метод отправляем текущий элемент и предыдущий
- if (b == true)// прибавляем
- {
- switch (ch[i])
- {
- case 'I':
- arabian++;
- break;
- case 'V':
- arabian = arabian + 5;
- break;
- case 'X':
- arabian = arabian + 10;
- break;
- case 'L':
- arabian = arabian + 50;
- break;
- case 'C':
- arabian = arabian + 100;
- break;
- case 'D':
- arabian = arabian + 500;
- break;
- case 'M':
- arabian = arabian + 1000;
- break;
- default: break;
- }
- a = ch[i];//запаоминаем текущий элемент
- }
- if (b == false)//отнимаем
- {
- switch (ch[i])
- {
- case 'I':
- arabian--;
- break;
- case 'V':
- arabian = arabian - 5;
- break;
- case 'X':
- arabian = arabian - 10;
- break;
- case 'L':
- arabian = arabian - 50;
- break;
- case 'C':
- arabian = arabian - 100;
- break;
- case 'D':
- arabian = arabian - 500;
- break;
- case 'M':
- arabian = arabian - 1000;
- break;
- default: break;
- }
- //тут не запоминаем текущий элемент, так как могут идти несколько III, например IIX
- }
- }
- }
- Console.WriteLine("Result: ");//Вывод результата
- Console.WriteLine(arabian);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement