C++:十进制到罗马数字的转换

C++: Decimal to Roman Numeral conversion

本文关键字:数字 转换 罗马 十进制 C++      更新时间:2023-10-16

我知道如何做到这一点,过去也做过这样的程序,但它从未包含罗马数字的特殊情况(例如IV=4)。以极简主义的方式将其集成到功能程序中是我的主要问题。有什么好方法可以做到这一点吗?

一个非常简单的解决方案,在伪代码中,可能看起来像这样:

value = get_the_value_to_convert();
divider = 1000;  // Start at 1000 (M)
while (value > 0)
{
    count = value / divider;
    value = value % divider;
    for (i = 0; i < count; ++i)
        print(roman_numeral_from_number(divider));
    divider /= 10;
}

roman_numeral_from_numbe函数在数字和罗马数字之间进行一对一映射。

对于例如5432作为输入,它将打印MMMMMCCCCXXXII

为了获得更好的结果,将divider变量除以每秒一次的25

为了获得更好的结果,请添加对某些数字的检查,例如90等于"XC"

请注意,即使进行了修改,上述算法也无法处理非常大的数字,但另一方面,维基百科表示,历史上它只用于小数字。