Вложенный цикл с массивами, имеющими повторяющиеся числа

0

У меня есть массив, который хранит число каждого элемента.

int total[5] = {2,3,4,5,6}
int num = 5; //array total has 5 elements

Это означает, что у нас есть 2 элемента 0, 3 элемента 1 в нашем исходном массиве. Мы не беспокоимся об исходном массиве, так как у меня уже есть код для сохранения количества элементов.

Мне нужен цикл вложенных циклов, который создает новый массив, который выглядит так:

array[0] = 1;
array[1] = 1;

array[2] = 5;
array[3] = 5;
array[4] = 5;

array[5] = 9;
array[6] = 9;
array[7] = 9;
array[8] = 9;

и так далее. То есть, мы сохраняем значение в нашем новом массиве столько же, сколько его значение в массиве "total". Значения 1,5,9 и т.д. Хранятся в массиве, называемом элементом. У меня есть что-то вроде этого до сих пор:

for (int i = 0; i < num; i++){
     for (int j = 0; j < total[i]; j++){
         array[i + j] = element[i];
     }
}

Может ли кто-нибудь помочь мне понять это?

  • 2
    В чем вопрос?
  • 2
    Насколько я понимаю, ваш код должен работать. Какой у вас вопрос?
Показать ещё 1 комментарий
Теги:
arrays
loops

2 ответа

1

Легкое решение (хотя и не обязательно элегантное) заключается в следующем:

int count = 0;
for (int i = 0; i < num; i++){
    for (int j = 0; j < total[i]; j++){
        array[count] = element[i];
        count++;
    }
}

то вам не нужно беспокоиться о том, чтобы попытаться выяснить, в какой позиции вы находитесь для массива.

0

Вам нужно отслеживать количество элементов:

int sum = 0;
for (int i = 0; i < num; i++){
     for (int j = 0; j < total[i]; j++){
         array[sum + j] = element[i];
     }
     sum += total[i];
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню