Загрузка данных


#include <iostream>
#include <clocale>

using namespace std;

// Предусловие: введена строка st длиной до 13 символов из римских цифр (I, V, X, L, C, D, M).
// Постусловие: вычислено и выведено десятичное число s.
void main()
{
    setlocale(LC_ALL, "Russian");

    char st[14]; // 13 символов + 1 под '\0[span_0](start_span)'[span_0](end_span)
    cout << "Введите римское число: ";
    cin.getline(st, 14);

    // Таблицы соответствия римских знаков и их значений
    char r[] = { 'I', 'V', 'X', 'L', 'C', 'D', 'M' };
    int v[] = { 1,   5,   10,  50,  100, 500, 1000 };

    int s = 0;
    int i = 0;

    while (st[i] != '\0')
    {
        int n1 = 0;
        int n2 = 0;

        // Находим значение текущей и следующей буквы
        for (int j = 0; j < 7; j++)
        {
            if (st[i] == r[j]) n1 = v[j];
            if (st[i + 1] == r[j]) n2 = v[j];
        }

        // Если текущая меньше следующей — вычитаем, иначе прибавляем
        if (n1 < n2)
        {
            s = s - n1;
        }
        else
        {
            s = s + n1;
        }

        i++;
    }

    cout << "В десятичной системе: " << s << endl;

    system("pause");
}