Я думаю, что я близок к тому, чтобы завершить эту программу, но я не совсем уверен, как продолжить.
В принципе, у меня есть три массива. Массив 3 пуст, а Массив 1 и Массив 2 имеют значения по усмотрению пользователей. Я хочу объединить Array 1 и Array 2 в Array 3 таким образом, чтобы они чередовались между четными и нечетными позициями в Array 3.
Так, например:
Массив 1 = [ 1,2,3,4,5 ]
Массив 2 = [ 10,20,30,40,50 ]
и массив 3 = [0,0,0,0,0,0,0,0,0,0]
Я хочу, чтобы конечный результат выглядел так:
Массив 3 = [ 1 , 10 , 2 , 20 , 3 , 30 , 4 , 40 , 5 , 50 ]
Вот что Я имею в виду, когда я говорю, что я хочу, чтобы Array 1 заполнял нечетных значений , а Array 2 заполнял четных значений .
Это то, что у меня есть соответствующий фрагмент кода пока выглядит так:
void EvenOdd(int n, int *ap1, int *ap2, int *ap3) {
// "n" is set to 5.
ap1 = arr1;
ap2 = arr2;
ap3 = arr3;
int i;
int j;
int k;
for (i = 0; i < n * 2; i++) {
for (j = 0; j < n; j++) {
if ((i + 1) % 2 != 0)
ap3[i] = ap1[j];
}
for (k = 0; k < n; k++) {
if ((i + 1) % 2 == 0)
ap3[i] = ap2[k];
}
}
}
arr1, arr2 и arr3 - все глобальные массивы.
Каждый раз, когда я запускаю программу, ей присваиваются только последние значения Массива 1 и Массива 2 позициям в Массив 3, например:
Массив 1 = [ 1,2,3,4,5 ]
Массив 2 = [ 6,7,8,9,10 ]
И массив 3 = [ 5 , * тысяча шестьдесят-девять * 10 , * тысяча семьдесят-один * 5 , * тысяча семьдесят три * 10 * тысяча семьдесят четыре *, 5 , 10 , 5 , 10 , 5 , 10 ]
Это все подсказывает мне, что два для циклов внутри первого продолжайте работать для «i», пока они не достигнут конца своего массива каждый раз, поэтому последние значения последовательно назначаются, но я не уверен, как это исправить, чтобы получить ожидаемый результат.