私は現在C++の本を読んでおり、バイナリの数値(ユーザが入力したもの)を10進数に変換するように読者に要求するタスクがあります。これまでのところ、私は次のコードを持っていますが、すべて0が出力されます。何が間違っていたのでしょうか?C++のwhileループを使用したバイナリから10進数への変換
#include <iostream>
using namespace std;
int main()
{
int x, b = 10, decimalValue = 0, d, e, f, count = 1, counter = 0;
cout << "Enter a binary number: ";
cin >> x;
x /= 10;
while(x > 0)
{
count++;
x = x/10;
}
while (counter < count)
{
if (x == 1)
{
f = 1;
}
else{
f = x % b;
}
if (f != 0)
{
if (counter == 0)
{
decimalValue = 1;
}
else
{
e = 1;
d = 1;
while (d <= counter)
{
e *= 2;
d++;
}
decimalValue += e;
}
}
x /= b;
counter++;
}
cout << decimalValue << endl;
system("pause");
return 0;
}
Iはコードのその部分をチェックしています。それは、入力された数字に何桁の桁があるかを調べることだけです。 –
@Emile:そうではありません。 'x = x/10;'ステートメントは、すべての反復で 'x'を0にリセットしてから値を失います。 –
ああ..ありがとう:)。今すぐ修正しました。私はその部分を逃したと思います。 –