3

int をパラメーターとして取り、int[] を出力する関数を取得しました。

入力 int は 0 から 1000 までの数値です。私の目標は、この数値を、各インデックスが入力数値の数字である配列に変換することです。また、入力数値が 2 桁の場合、最下位 2 ビットは 0 になります。

例えば:

int num1 = 404;
int num2 = 42;

出力があります:

num1 = {4, 0, 4, 0}
num2 = {4, 2, 0, 0}

等々..

これを達成する賢い方法はありますか?1つは数値をchar *に変換することですが、それをどのように扱うかはよくわかりません。私は今のところ迷っています。ところで: これは宿題ではありません ;)

4

1 に答える 1

2

1 つの方法は、itoa関数またはstd::stringstreamクラスを使用して数値を記号表現に変換することです。そこ'0'から、各文字から減算し、対応する数字を 0 ~ 9 として取得できます。

別の方法は次のとおりです。

int tmpNum = num1;
int factor = 1;
int digits [4] = {0};

// Finding the most significant digit's weight
for (factor = 1; factor < num1; factor *= 10); 
factor /= 10;

// Finding digits from most to least significant
for (int i = 0; tmpNum > 0; ++i)
{
   digits[i] = tmpNum / factor;
   tmpNum -= factor * digits[i];
   factor /= 10;
}

これは基本的に 10 進数 (10 進数) に変換されます。正確には、2 進数の 10 進数です。

于 2013-06-27T08:11:20.310 に答える