gpt4 book ai didi

C++:将整数转换为罗马数字的困惑

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:54:44 26 4
gpt4 key购买 nike

我正在为我的 C++ 类(class)开发一个程序。准则是创建一个将整数转换为罗马数字的转换器,规范是我必须至少使用一个 while 语句、do while 语句和一个开关。

我的代码大部分工作正常,但我不能涉及涉及 4 和 9 的特殊情况(例如 (4, 14, 24 34, etc) 40, (140, 240, etc) 400, (1400, 2400、3400 等) 和 (9、19、29、39 等) 90、(190、290 等) 900、9000)) 为我工作。这是我此时的代码:

#include <iostream>
#include <string>
using namespace std;
int main( )
{
cout << "Please enter an interger." << endl;
int num = 0;
cin >> num;
string rep = "";


switch(num)
{
case 40:
rep += "XL";
num -= 40;
break;
case 90:
rep += "XC";
num -= 90;
break;
}


if (num >= 1000){
rep += string(num / 1000,'M');
num %= 1000;
}
if (num >= 500){
rep += string(num / 500,'D');
num %= 500;
}
if (num >= 100){
rep += string(num / 100,'C');
num %= 100;

}
if (num >= 50){
rep += string(num / 50,'L');
num %= 50;

}
if (num >= 10){
rep += string(num / 10,'X');
num %= 10;
}
if (num >= 5){
rep += string(num / 5,'V');
num %= 5;
}
if (num >= 1){
rep += string(num,'I');
num %= 1;
}


cout << num << endl;
cout << rep << endl;

return 0;
}

最佳答案

switch(num)
{
case 40:
rep += "XL";
num -= 40;
break;
case 90:
rep += "XC";
num -= 90;
break;
}

它们仅在数字为 4090 时有效。尝试将数字分开而不是比较相等。

关于C++:将整数转换为罗马数字的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617943/

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