2016-10-01 20 views
0

我寫了這段代碼,它似乎很好,但輸出總是0可能是什麼問題?我只是寫一個代碼來從X號碼系統轉換爲十進制。C++,一個從x數字系統到十進制的轉換器

#include <string> 
    #include <iostream> 
    using namespace std; 

int main() { 

string str; 
long szam = 0, Dec, num, Base = 1, x,i=1; 
cout << "the number : "; 
cin >> str; 
cout << "The input number system:"; 
cin >> x; 

    while (str[i] == '\0') 
    { 
     if (str[i] = 'A') { num = 10;} 
     else if (str[i] = 'B') { num = 11; } 
     else if (str[i] = 'C') { num = 12; } 
     else if (str[i] = 'D') { num = 13; } 
     else if (str[i] = 'E') { num = 14; } 
     else if (str[i] = 'F') { num = 15; } 
     else { num = str[i] - '0'; } 

     Dec = Dec + num * Base; 
     Base = Base * x; 

     } 
cout << szam << endl; 
return 0; 

}

如果x小於10它很容易,但我不能處理,因爲信使用號碼的10+系統。

+0

請把代碼***放在問題本身***。 –

+0

另外,您應該考慮用英語以外的其他語言編寫代碼的主要缺點之一是您不可能從地球其他地方獲得任何幫助。更糟的是,使用諸如「x」之類的神祕變量名稱不太可能從任何人*獲得幫助。 –

+0

Sry你是對的 – Koreszka10

回答

0
  1. i應該從0開始,而不是從1

  2. i應您的循環中遞增。就目前來看,i永遠不會增加,所以它總是有1的值,所以你只有在看str[1]

  3. 你的循環應該繼續,而str[i] != '\0'str[i] == '\0'

  4. 您不妨考慮處理不僅字母ABCDEF而且字母abcdef的情況。

-1

你應該使用std::stol這正是你所需要的。

相關問題