Преобразовать римское число из строки в число - C#
Формулировка задачи:
Вводится строка. Если она является записью римского числа, то преобразовать ее в целое число
(язык С#) хелп
Решение задачи: «Преобразовать римское число из строки в число»
textual
Листинг программы
static void Main(string[] args)
{
string s;
Console.Write("введите римское число состоящие из цифр I,V,X: ");
s= Convert.ToString(Console.ReadLine());
bool ok = true;
int state = 1, n = 0;
for (int i = 0; i < s.Length && ok; i++)
{
switch(s[i])
{
case 'X':
switch(state)
{
case 1:
n=10;
state=2;
break;
case 2:
n=n+10;
break;
case 3:
case 4:
case 5:
ok=false;
break;
case 6:
n=n+8;
state=7;
break;
case 7:
ok=false;
break;
}
break;
case 'V':
switch(state)
{
case 1:
n=5;
state=3;
break;
case 2:
n=n+5;
state=3;
break;
case 3:
case 4:
case 5:
ok=false;
break;
case 6:
n=n+3;
state=7;
break;
case 7:
ok= false;
break;
}
break;
case 'I':
switch(state)
{
case 1:
n=1;
state=6;
break;
case 2:
n=n+1;
state=6;
break;
case 3:
n=n+1;
state=4;
break;
case 4:
n=n+1;
state=5;
break;
case 5:
n=n+1;
state=7;
break;
case 6:
n=n+1;
state=5;
break;
case 7:
ok=false;
break;
}
break;
default:
ok=false;
break;
}
if (ok)
Console.WriteLine(n);
else
Console.WriteLine("Не являеться римским числом");
Console.ReadKey();
}
}