У меня есть массив, который хранит число каждого элемента.
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];
}
}
Может ли кто-нибудь помочь мне понять это?
Легкое решение (хотя и не обязательно элегантное) заключается в следующем:
int count = 0;
for (int i = 0; i < num; i++){
for (int j = 0; j < total[i]; j++){
array[count] = element[i];
count++;
}
}
то вам не нужно беспокоиться о том, чтобы попытаться выяснить, в какой позиции вы находитесь для массива.
Вам нужно отслеживать количество элементов:
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];
}