我初始化了一个在运行时将填充值的数组,虽然我无法弄清楚如何使用值分配数组中的下一个可用位置。例如
int array[5];
for (int i=0; i<15; i++)
if(i == 5 || i == 10)
array[0] = i
我希望将第一个值5分配给数组[0],然后将第二个值10分配给数组[1]等。我将如何进行此操作?
答案 0 :(得分:2)
您需要再增加一个变量nextAvailablePosition
。
array[nextAvailablePosition++] = 5;
array[nextAvailablePosition++] = 10;
或者只使用std::vector
。
答案 1 :(得分:2)
如果你想用5的递增倍数填充你的数组:
int array[5];
for(int i=0; i<5; i++) {
array[i] = (i+1) * 5;
}
如果你想在5到10之间交替:
int array[5];
for(int i=0; i<5; i++) {
array[i] = (i % 2 == 0) ? 5 : 10;
}
答案 2 :(得分:0)
看到数组将满足0到14之间的数字,因为你正在使用&lt;运算符(i&lt; 5),如果你想要在0和15之间,使用&lt; =
具体问题的答案是创建一个新变量
int array[5];
int aux = 0; //New variable
for (int i=0; i<15; i++){
if(i == 5 || i == 10){
array[aux] = i;
aux++; // aux = aux+1
}
}
但是在这种情况下,数组将满足i的值,没有必要使用循环,你可以这样做:
array[0] = 5;
array[1] = 10;
但也许你真正想要的是在数组中加入5的整数倍,所以在这种情况下,你可以注意到:
5的数字倍数是一个数字,当除以5时剩余的0为0,即:
if (number % 5 == 0){
//number is multiple of 5
}
所以,如果你想把0和15之间的所有数字加5,你可以做的是:
int array[5];
int aux = 0; //New variable
for (int i=0; i<=15; i++){ // <= to use 15 too
if(i%5){
array[aux] = i;
aux++; // aux = aux+1
}
}
或者最好的方式:
int value = 5;
int array[5];
int aux = 0;
while(value <= 15) {
array[aux] = value;
aux++;
value += 5; // value = value+5
}