C++:十进制到罗马数字的转换
C++: Decimal to Roman Numeral conversion
我知道如何做到这一点,过去也做过这样的程序,但它从未包含罗马数字的特殊情况(例如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
变量除以每秒一次的2
和5
。
为了获得更好的结果,请添加对某些数字的检查,例如90
等于"XC"
。
请注意,即使进行了修改,上述算法也无法处理非常大的数字,但另一方面,维基百科表示,历史上它只用于小数字。
相关文章:
- 将数字转换为字母(例如:123 转换为一二三)
- 将数字转换为单词
- 使用if-else将数字转换为单词
- 将数字转换为填充字符串
- 编译时间文本到数字转换 (atoi)
- 在 c++ 中将数字转换为矢量数组的函数
- 奇怪的数字转换C++
- 用C++将浮点数字转换为本地化字符串
- 如何将ASCII数字转换为从文件中提取的整数
- 检查字符串是否是数字,然后将该数字转换为 int?
- 将 MPFR 数字转换为字符串并返回
- 如何将数字转换为整数向量?
- 如何在C++中将数字转换为链表
- 如何将字符串中的多个数字转换为整数
- 有问题将数字转换为罗马数字
- 这个给定的代码应该将给定的数字转换为尽可能滞后的数字,no.by 用 9.It 替换合适的数字是行不通的
- 将两位数字转换为低内存表示的最快方法
- 视觉 如何将混合的字母和数字转换为仅字母?C++
- 如何在 c++ 中将十六进制数字转换为字符
- 如何将字符串数字转换为各个数字的整数数组