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

标签 c++ string while-loop switch-statement

我正在为我的 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/

相关文章:

java - 递归回文一遍又一遍地返回语句

c++ - 我可以使用 `this` 关键字从对象自身的成员函数更新对象吗?

c++ - 如何将 Delphi 与 C++ 链接起来?

c++ - boost directory_iterator是否在Windows上按字母顺序访问文件和文件夹

php - 按最后一个字符拆分字符串并保存到数组?

java - 验证字符串是否与格式字符串匹配

java - 替换特定模式中的字符或特定字符之后的字符

c++ - 我的 do while 循环只执行一次

python - for循环中的条件

c++ - 使用 cublas 设备 API 计算矩阵行列式