Преобразуване на римски цифри в арабски

     Стойностите на всяка цифра се натрупват (събират) една по една, освен ако цифрата е по-малка от следващата я, тогава се изважда от нея: XXIX --> 29=10+10+(10-1).

    Пример: Въвеждате число в римски цифри и програмата го преобразува в число с арабски цифри.

#include<iostream> // for Code Blocks
#include<string.h>
using namespace std;
int func(char c)
{
switch (c)
{
    case 'I': case 'i': return 1;
    case 'V': case 'v': return 5;
    case 'X': case 'x': return 10;
    case 'L': case 'l': return 50;
    case 'C': case 'c': return 100;
    case 'D': case 'd': return 500;
    case 'M': case 'm': return 1000;
}
}
int main()
{
    int sum,n=0;
    char str[20], c;
    cin >> str;
    n=strlen(str)-1;
    sum=func(str[n]);
    for (int i=0;i< n;i++)
{
    if (func(str[i])>=func(str[i+1]))
        sum=sum+func(str[i]);
    else
        sum-=func(str[i]);
}
    cout<< sum;
return 0;
}

    Обяснение: римските цифри се изписват с латинските букви съответно:
I --> 1;
V --> 5;
X --> 10;
L --> 50;
C --> 100;
D --> 500;
M --> 1000;
      Принцип на действие:
  Въвеждате число в низа (str[20]). Променливата n съдържа дължината на низа -1, защото това е последният символ (броенето започва от 0).
Стойността на последният символ се запазва първоначално в променливата sum -->(sum=func(str[n]);).
  След това в цикъла for започваме да сравняваме символите от първият със следващият го по ред (func(str[i])>=func(str[i+1])), ако е по-голям или равен от следващият го то, тази стойност се прибавя към сумата (sum=sum+func(str[i])), ако е по-малък от следващият го тогава го изваждаме от общата сума (sum-=func(str[i])).
Накрая извеждаме самото арабско число --> sum.
. . . . ......



Благодаря за вниманието Ви!