2016-02-06 149 views
-1

嗨,所以我做了一个程序,要求用户输入一个整数,并吐出罗马数字。我有它的工作,所以罗马数字部分将工作,但我无法循环程序。现在我有程序循环但我不能让罗马数字功能工作。该程序执行,但它就好像function1不存在,我不知道如何获得主函数来使用它。我必须保持主要功能中的所有用户交互。我想要cout < < roman < < endl;用罗马数字吐出整数,但它不起作用。这只是我的第二次任务,所以任何帮助将不胜感激!感谢需要帮助将第二个功能并入我的程序

#include <iostream> 
#include <string> 


using namespace std; 
string roman; 
int integer; 
int num; 

char answer; 

int main() 
{ 
    while (true) 
    { 
    cout << "Enter Integer " << endl; 
    cin >> integer; 
    cout << roman << endl; 
    cout << "convert another (y/n)? " << endl; 
    cin >> answer; 
    if (answer == 'n' || answer == 'N') 
     break; 
    } 
} 

int function1() 
{ 
    if ((integer >= 4000) || (integer <= 0)) 
    { 
    cout << endl << "Invalid Integer" << endl; 
    } 
    //3286 
    else 
    { 
    if (integer >= 1000) 
    { 
     num = (integer/1000); 

     for (int i = 0; i < num; i++) 
     { 
      roman += 'M'; 
     } 
     integer %= 1000; 
     // care ^^^ 
    } 
    // 286 
    if (integer >= 100) 
    { 
     num = (integer/100); 

     if (num == 9) 
     { 
      roman += "CM"; 
     } 
     else if (num >= 5) 
     { 
      roman += 'D'; 

      for (int i = 0; i < num - 5; i++) 
      { 
       roman += 'C'; 
      } 
     } 
     else if (num == 4) 
     { 
      roman += "CD"; 
     } 
     else if (num >= 1) 
     { 
      for (int i = 0; i < num; i++) 
      { 
       roman += 'C'; 
      } 
     } 
     integer %= 100; 
    } 

    // 86 
    if (integer >= 10) 
    { 
     num = (integer/10); 

     if (num == 9) 
     { 
      roman += "XC"; 
     } 
     else if (num >= 5) 
     { 
      roman += 'L'; 

      for (int i = 0; i < num - 5; i++) 
      { 
       roman += 'X'; 
      } 
     } 
     else if (num == 4) 
     { 
      roman += "XL"; 
     } 
     else if (num >= 1) 
     { 
      for (int i = 0; i < num; i++) 
      { 
       roman += 'X'; 
      } 
     } 
     integer %= 10; 
     // 6 

    } 

    if (integer >= 1) 
    { 
     num = integer; 

     if (num == 9) 
     { 
      roman += "IX"; 
     } 
     else if (num >= 5) 
     { 
      roman += "V"; 

      for (int i = 0; i < num - 5; i++) 
      { 
       roman += 'I'; 
      } 
     } 
     else if (num == 4) 
     { 
      roman += "IV"; 
     } 
     else if (num >= 1) 
     { 
      for (int i = 0; i < num; i++) 
      { 
       roman += 'I'; 
      } 
     } 
    } 


    cout << "--> " << roman << endl; 

} 
system("PAUSE"); 
return 0; 
} 
+1

我无法从你的问题得到了问题的清晰的图像,但你从来没有真正调用'function1'。 –

+0

当你编写代码时,从一些简单的工作开始,然后每次增加一点复杂性。当你写'function1'(坏名字,顺便说一句,我建议像'Roman'),从一个函数开始,将任何数字转换为“X”。 *在你尝试任何更复杂的事情之前,让它工作。*这种方法将为你节省大量浪费时间。 – Beta

+0

也许使用带有意义名称的标识符可以帮助我们和我们 –

回答

1

您需要实际调用功能1,例如:

while (true) 
{ 
    cout << "Enter Integer " << endl; 
    cin >> integer; 
    function1(); 
    cout << roman << endl; 
    cout << "convert another (y/n)? " << endl; 
    cin >> answer; 
    if (answer == 'n' || answer == 'N') 
     break; 
} 
+0

好吧,如果您正在寻找改进程序的好方法,首先我会像处理实际函数一样处理函数1 - 取一个整型参数并返回一个字符串,它的范围。不要打扰有一个“整数”是一个全球性的,根本没有“罗马” - 这就是参数传递和返回值。在函数内部声明num - 你的函数外部没有人需要知道它包含的临时变量。现在function1基本上可以在一个地方使用一次。 –