2013-11-07 2 views
0

Итак, у меня есть таблица чисел/массив, как здесь A = [1, 2, 3, 4, 5, 6], причем индексы A [0] = 1, A [1] = 2 ... A [я = 5] = 6 и т.д.Добавление пар элементов

Теперь я хочу, чтобы в основном взять среднее из каждых двух элементов, таким образом, что мой полученный массив следующим образом:

B = [1,5, 3,5 , 5.5], где B [0] = (A [0] + A [1])/2, B [1] = (A [2] + A [3])/2 и B [2] = (A [4] + A [5])/2

Мой код продолжает ошибочно принимать во внимание дополнения, (A [1] + A [2])/2 и т. Д., Чтобы дать мне после результирующего массива,

[1.5, 2.5 , 3.5, 4.5 , 5.5]

не нужны полужирным элементы. Я не знаю, почему это происходит, но это то, что у меня есть:

for(i=0; i<=5; i+=1) 
    B[i] = (A[i] + A[i+1])/2 
    for(j=i+(i+2); j<=5; j+=1) 
     B[j] = (A[j]+ A[j+1])/2 
    endfor 
endfor 

Может кто-нибудь сказать мне, что я делаю неправильно?

+0

Я думаю, что вам нужно четко определить свой вывод и формулу, которую вы хотите использовать независимо от кода. Специально определите B [i]. Что вы имеете в виду, что вам не нужны жирные цифры? Вы хотите 1,5,3,5 и 5,5 только в B? Чем больше вы говорите, тем легче людям помочь. – NoChance

ответ

0

Используйте другое приращение в вашем for цикле:

j=0 
for (i=0;i<=5;i+=2) 
    B[j]=(A[i]+A[i+1])/2 
    j+=1 
end for 

и вам не нужен второй, внутренний цикл.

+0

Я сделал это, используя i + = 2, но он, похоже, не работал и дал мне те же результаты? –

+0

Большое спасибо! :) –

0

Я думаю, что вы делаете это более сложным, чем оно есть. Вам нужны первые 2 значения в массиве в вашем вычислении, тогда вам понадобятся следующие 2 значения и т. Д. Для этого требуется всего 1 цикл через массив.

Что-то вроде этого:

j = 0 
for(i=0; i<=5; i+=2) 
    B[j] = (A[i] + A[i+1])/2 
    j += 1 
endfor 

Вам может понадобиться, чтобы проверить, что там на самом деле равное количество значений в A, в противном случае A[i+1] может привести к ошибке.

+0

Большое спасибо :) –

+0

Добро пожаловать. :) – MAV

Смежные вопросы