Алексей1153, спасибо - отмазал.
Romario, Это не готовая прога, а только функция. Поэтому нет main.
На самом деле перевод дело не шуточное, если не ошибаюсь есть даже некие неоднозначности при работе с ОЧЕНЬ большими числами. Автор статьи предлагает быстрый "дешёвый" вариант. Главная проблема в том, что римская система является тн непозиционной системой, те когда определённому числу соответствует определённый знак Х - 10, L - 50. Те перевод можно сделать только по определённым правилам, а не по формулам, как это можно сделать в позиционных системах. Для удовлетворения правилам построения цифр до 4999, автором предлагается табличка римских цифр.
static const RomanDigit_t RomanDigits[]=
{
{"M", 1000},
{"CM", 900},
{"D", 500},
{"CD", 400},
{"C", 100},
{"XC", 90},
{"L", 50},
{"XL", 40},
{"X", 10},
{"IX", 9},
{"V", 5},
{"IV", 4},
{"I", 1},
};
Обрати внимание, что например 9 тоже в ней как IX. или 4. Хотя они, казалось бы, являются комбинацией 1, 5 и 10.
А алгоритм
Алексей1153 уже объяснил. Лёха только при 0 работать не будет - не было 0 у древних римлян.
Те 0 < iNumber <= 4999.