gpt4 book ai didi

c++ - 我是否错误地使用了这个开关盒?

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:16 26 4
gpt4 key购买 nike

所以这个程序的想法是让用户以最大 4999 的罗马数字形式输入。我决定使用 switch case 来循环输入字符串。问题是当我输入一个像 99 这样的 XCIX 值时,它返回 -101。任何帮助都将不胜感激。

int number = 0, M = 1000, D = 500, C = 100, L = 50, X = 10, V = 5, I = 1;

for (int i = 0; i < roman.length(); i++)
{

switch (roman[i])
{
case 'M': number += 1000; break;
case 'D': if (roman[i + 1] != 'D' && i + 1 < roman.size())
number -= 500;
else
number += 500;
break;
case 'C': if (roman[i + 1] != 'C' && i + 1 < roman.size())
number -= 100;
else
number += 100;
break;
case 'L': if (roman[i + 1] != 'L' && i + 1 < roman.size())
number -= 50;
else
number += 50;
break;
case 'X': if (roman[i + 1] != 'X' && i + 1 < roman.size())
number -= 10;
else
number += 10;
break;
case 'V': if (roman[i + 1] != 'V' && i + 1 < roman.size())
number -= 5;
else
number += 5;
break;
case 'I':
if (roman[i + 1] != 'I' && i + 1 < roman.size())
number -= 1;
else
number += 1;
break;
}

}
return number;

最佳答案

只有当罗马数字出现在具有更高 值的数字之前时,它们才算负数。仅仅与众不同是不够的。

关于c++ - 我是否错误地使用了这个开关盒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25706542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com