无法使用个位、十位、百分之一和千位显示罗马数字

问题描述 投票:0回答:0

我的代码需要考虑到 2000 到 2100 年并将它们显示为罗马数字。

例如,2000:XXXIV.

我开始进行数字检查:

const int DIGIT_CHECK = 10
我相信它会分裂和一个或两个数字。

然后对于那些地方,我初始化了一个 unit_digit 并将其%赋给 DIGIT_CHECK

int unit_digit = n % DIGIT_CHECK;

我相信你必须对十分位、百分之一和千位做同样的事情:

int tenth_digit = n / DIGIT_CHECK;
int hundredth_place = n / 100;
int thousandth_digit = n / 1000;

然后我列出了数字一、四、五、九、十、五十、百、千的罗马数字字符串:

const string ONE = "I";
等等......

然后我启动了一个开关盒(正如我的教授所说)

switch (unit_digit)
,它以个位数“I,II,III,IV,V,VI,VII,VIII,IX 和 X”接受所有可能的罗马数字排列“:
case 1: roman = ONE;
case 2: roman = ONE + ONE;
...

我在接近 2076 年时遇到第十位数字的问题。这并不是代码不起作用,只是当它接近 2076 时打印出来:

2075 --> CIX
2076 --> C
当 2076 应该是 CX 时。所以在十分之一位开关盒中缺少一些东西:
我已经运行了调试器并查看了论坛,所以如果我得不到任何帮助也没关系。只是想我会调整我的问题以更好地适应评论。对不起

如果您的代码不工作,或者您正在尝试修复错误/奇怪的情况,您需要指定您要更改的内容。否则,如果您想进行一般性审查,
https://codereview.stackexchange.com/
 更适合这个问题。
c++ visual-c++ switch-statement case
© www.soinside.com 2019 - 2024. All rights reserved.