2016-02-06 57 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基本上可以在一個地方使用一次。 –