0

単純な10進数から2進数へのプログラムを作成しました。番号8を入力するとします。0001を書き戻し、1000にします。

どうやってやるの?

ここにコード:

using namespace std;

int translating(int x);

int main()
{
    int x;
    int translate;
    cout << "Write a number: ";
    cin >> x;
    cout << endl;
    translate = translating(x);
    cout << endl;
    cout << endl;

    return 0;
}

int translating(int x)
{
    if (x == 1)
    {
        cout << "1";
        return 0;
    }
    if ((x % 2)==1)
    {
        cout << "1";
        return (translating((x-1)/2));
    }
    else
    {
        cout << "0";
        return (translating(x/2));
    }
}
4

2 に答える 2

5

出力を直接書き込む代わりに、最初に一時的な文字列に書き込んでから、その文字列を最後の文字から最初の文字までトラバースします。

于 2012-10-15T14:04:45.747 に答える
3

非常にシンプルで、簡単すぎて自分を蹴ってしまいます。出力ステートメントと再帰関数呼び出しの順序を逆にするだけです。また、バグを修正しました。

void translating(int x)
{
    if (x < 2)
    {
        cout << x;
        return;
    }
    if ((x % 2)==1)
    {
        translating((x-1)/2);
        cout << "1";
    }
    else
    {
        translating(x/2);
        cout << "0";
    }
}
于 2012-10-15T14:07:07.883 に答える