Как я могу объединить несколько номеров в одно, например, 1,7,3 = 173?

Я думал о том, как сделать это в течение нескольких часов.

Например, давайте приведем массив неопределенной длины Arr [] = {1,2,3,4}.

(неопределенный, потому что он может иметь любое другое количество элементов)

Как это может быть очевидно, лучший способ сделать это математически, вероятно, будет умножение первого элемента * 1000, + второй элемент * 100, + третий элемент * 10, + четвертый элемент.

Таким образом, результат будет: 1000 + 200 + 30 + 4 = 1234.

Теория довольно проста, но как вы можете реализовать это в цикле for с тем фактом, что в нем может быть любое другое количество элементов, например, давайте предположим, что в нем может быть 7 элементов, и операции теперь потребуется «Седьмой». элемент * 100000 "? Я думал об этом некоторое время, и я не могу придумать, как написать это в «для», что делает это возможным в том же цикле. Ребята, у вас есть предложение, как я могу это сделать?

Благодарность!

Всего 3 ответа


Предполагая, что все ваши целые числа - только одна цифра в базе 10:

int result = 0;
for (int i = 0; i < len; ++i) {
    result = result*10 + arr[i];
}

int size = sizeof(Arr) / sizeof(*Arr), p = 1, number = 0;

for(int i = size - 1; i >= 0; i--)
{
    number = number + a[i] * p;
    p *= 10;
}
cout << number;

Я думаю, вы могли бы попробовать это. Переменная размера содержит формулу для определения размера массива, остальное - просто математика. Я возвращаюсь назад к циклу for, потому что так работает моя формула. Надеюсь, это помогло!


Чтобы компилятор определил для вас размер массива:

template <typename T, size_t size>
int compute(T (&arr)[size]) {
  int result = 0;
  for (size_t i = 0; i < size; i++) {
    result = result * 10 + arr[i];
  }
  return result;
}

Попробуйте онлайн!


Есть идеи?

10000