0

私はこのコードを書きましたが、それは良いように見えましたが、出力は常に 0 でした。何が問題なのでしょうか? x数値システムから10進数に変換するコードを書いています。

    #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+ のシステムは数字の文字の使用のために処理できません。

4

2 に答える 2

0
  1. i1からではなく、0から始めるべきです。

  2. iループ内でインクリメントする必要があります。現在のところ、iはインクリメントされないため、常に の値を持ちます。したがって、常に を1見ているだけですstr[1]

  3. ループは whilestr[i] != '\0'ではなくwhileで続行する必要がありstr[i] == '\0'ます。

  4. ABCDEF文字だけでなく、文字の大文字小文字の処理も検討する必要があるかもしれませんabcdef

于 2016-10-01T08:08:34.650 に答える
-1

必要なことを正確に行うstd::stolを使用する必要があります。

于 2016-10-01T08:21:46.140 に答える