具有重复数字的数组的嵌套循环

时间:2014-11-11 22:17:09

标签: c++ arrays loops

我有一个数组来保存每个元素的数量。

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

这意味着我们在原始数组中有2个元素0,3个元素1' s。我们并不担心原始数组,因为我已经有了一个代码来保存元素的数量。

我需要一个嵌套的for循环来创建一个如下所示的新数组:

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等存储在名为element的数组中。到目前为止我有这样的事情:

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

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

一个简单的解决方案(虽然不一定优雅)是执行以下操作:

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

那么你不必担心试图弄清楚你在阵列的位置。

答案 1 :(得分: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];
}