0

私が望むのは、整数を取り込んで、以下のコードに示すメソッドに近いメソッドでバイナリに変換することです。ただし、数値を小数点以下のように 2 進数に変換したい。したがって、入力として 625 を取得した場合は、それを 101 に変換する必要があります。

コードを考えると:

#include <iostream>
using namespace std;

int decTobinary(int);

int main(){
    cout << "Enter a number = ";
    int num;
    cin >> num; 
    int answer = decTobinary(num);
    cout << "answer: " << answer << endl"
    return 0;
}
int decTobinary(int x) {
    if (x==0)
    return 0;
    return 10 * decTobinary(x/2) + x % 2;
}
4

3 に答える 3

0

私はそれを一緒にハックしたので、きれいではありませんが、探していた出力が得られます:

#include <iostream>

float intToDecimalPoint(float f)
{
    if((f / 10.0f) <= 1.0f)
        return f/10.0f;
    else
        return intToDecimalPoint(f/10.0f);
}

void decTobinary(int x)
{
    if (x==0)
        return;

    float decimalPoint = intToDecimalPoint(float(x));
    if(decimalPoint*2.0f >= 1.0f)
    {
        std::cout << 1;
        int newX = int((decimalPoint*2.0f - 1.0f)*(float(x)/decimalPoint));
        return decTobinary(newX);
    }
    else
    {
        std::cout << 0;
        decTobinary(x*2);
    }
}

int main()
{
    std::cout << "Enter a number = ";
    int num;
    std::cin >> num; 
    std::cout << "answer: ";
    decTobinary(num);
    std::cout << std::endl;


    std::cin.get();
    std::cin.get();
    return 0;
}

アルゴはこちらから。私の解決策は浮動小数点の不正確さのために完全ではありませんが、ほとんどの場合にうまくいくはずですか?

于 2013-07-02T06:34:27.037 に答える
0

あなたは試すことができます

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

int GetNumberOfDigits (int i)
{
    return i > 0 ? (int) log10 ((double) i) + 1 : 1;
};

void function(int number, vector<int> &convert)    {
    double remainder = number/pow(10,GetNumberOfDigits(number));
    do
    {
        remainder = remainder*2;
        convert.push_back(int(remainder));
        remainder = remainder - int(remainder);
    }
    while(remainder != 0);
};

int main()  {
    vector<int> solution;
    int n;
    cout<<"Enter number: ";
    cin>>n;
    function (n, solution);
    for(int index = 0; index < solution.size(); index++) std::cout<<solution[index];
    return 1;
}
于 2013-07-02T07:07:24.467 に答える