4

私は整数配列を持っています

int number[] = {1,2,3,4};

int x = 1234 を取得するにはどうすればよいですか? 私はそれのacバージョンを持っている必要があります。

4

7 に答える 7

10
x = 1000*number[0] + 100*number[1] + 10*number[2] + number[3];

これは基本的に10進数がどのように機能するかです。より一般的なバージョン (「数値」の長さが分からない場合) は次のようになります。

int x = 0;
int base = 10;
for(int ii = 0; ii < sizeof(number); ii++) x = base*x + number[ii];

注 -baseが 10 以外の場合でも、上記のコードは機能します。もちろん、x通常の で印刷するとcout<<x、紛らわしい答えが返ってきます。しかし、それは別の時に役立つかもしれません。もちろん、それnumber[ii]が0から9までの範囲であることを本当に確認したいでしょうが、それはあなたの質問でほとんど暗示されています。それでも - 優れたプログラミングには、チェック、チェック、チェックが必要です。ただし、そのビットを自分で追加できると確信しています。

于 2013-05-10T02:50:28.590 に答える
2
int number[]={1,2,3,4}
int x=0,temp;
temp=10;
for(i=0;i<number.length;i++)
    {
        x=x*temp+number[i];
    }
cout>>x;
于 2013-05-10T02:58:50.807 に答える
2

10 を掛けて数値を左に「シフト オーバー」する方法を考えることができます。シフトの後に追加することで、数字を追加することを考えることができます。

したがって、効果的にループが終了しtotal *= 10、次にtotal += number[i]

もちろん、これは配列が数字である場合にのみ機能し、それが文字でnumber[i] - '0'あり、それが別の基数にある場合は、別の数値 (たとえば 8 進数の場合は 8) を乗算する必要があります。

于 2013-05-10T02:52:22.280 に答える
2
int i = 0, x = 0;
for(; i < arrSize; i++)
    x = x * 10 + number[i];

x結果です。

于 2013-05-10T02:52:31.587 に答える
2
int i;
int x = 0;
for ( i = 0; i < 4; i++ )
    x = ( 10 * x + number[i] );
于 2013-05-10T02:53:03.147 に答える
1

for ループと 10 のべき乗で何かを行うことができます

int tens = 1;
int final = 0;
for (int i = arrSize - 1; i <= 0; ++i)
{
    final += tens*number[i];
    tens*=10;
}
return final;
于 2013-05-10T02:51:24.140 に答える
1

答えは簡単です。ここに完全な関数をリストするだけです。

int toNumber(int number[],arraySize)
{
   int i;
   int value = 0;
   for(i = 0;i < arraySize;i++)
   {
      value *=10;
      value += number[i];
   }
   return value;
}
于 2013-05-10T02:53:22.067 に答える