2012-04-04 3 views
-5

Я использую C и у меня есть массив t[]Использование массивов с для цикла в C

Я написал for цикл, но ответ неверен.

Пожалуйста, помогите мне поймать ошибку. Мой код:

for(j = 0; j < tags; j++) 
{ 
    for(k = j; k < nb_of_subscribers*tags; k = k+tags) 
    { 
     avr[j] = (float)(avr[j]+t[k]); 
    } 
    printf("avr[j]:%f", avr[j]); 
} 

На самом деле, значения T [] считываются неправильно в цикл я не знаю, почему. Если я использую цикл for только для того, чтобы напечатать значения массива t, ответ будет правильным в противном случае (в цикле for), это неверно

Спасибо.

+10

Каким должен быть ваш код? Какие выводы вы дадите, какой результат вы ожидаете увидеть, и что вы на самом деле видите? – moonshadow

+12

Ответ: 42, поэтому любой другой ответ действительно ошибочен. – Jon

+0

t [k]: 0,000000 t [k]: 0,000000 t [k]: 1.000000 t [k]: 0.200000 t [k]: 0.333333 ........ результат: avr [j]: - 12516448 что неправильно, я действительно хочу получить сумму значений t – holy

ответ

1

Вы должны установить avr[j] в 0 перед началом итерационной суммы:

for(j = 0; j < tags; j++) 
{ 
    avr[j] = 0; // <----- 
    for(k = j; k < nb_of_subscribers*tags; k = k+tags) 
    { 
     avr[j] = (float)(avr[j]+t[k]); 
    } 
    printf("avr[j]:%f", avr[j]); 
} 
+0

Собственно, значения t [] читаются некорректно в цикле for, я не знаю почему. Если я использую цикл for только для того, чтобы напечатать значения массива t, ответ будет правильным в противном случае (в цикле for) неверно – holy

+0

@holy, в этом фрагменте кода ничего нет, что даст вам неправильные значения. напечатайте значения 'k' точно перед этим массивом и внутри массива и сравните результаты? Обратите внимание, что значение печати' t' по одному дает вам подписчиков по подписке, а внутри этого цикла вы получаете их тегом -tag. – Shahbaz

+0

t [k]: 0,000000 t [k]: 0,000000 t [k]: 1.000000 t [k]: 0.200000 t [k]: 0.333333 ........ результат: avr [j] : -12516448 w hich is wrong Я действительно хочу, чтобы сумма значений t – holy

0

Так я предполагаю, что т представляет собой массив nb_of_subscribers размера * теги и АРН массив тегов размера.

Если я не ошибаюсь, что вы собираетесь сделать, это следующие:

for(int j = 0; j < tags; j++) 
{ 
    for(int k = 0; k < nb_of_subscribers; k++) 
    { 
     avr[j] += (float)(t[j + k*tags]); 
    } 
    printf("avr[j]:%f", avr[j]); 
} 

Что сказать, предполагая, что метки были 2 и nb_of_subscribers были 3, с массива т [6] = { 0, 5, 1, 6, 2, 7}, тогда массив avr [2] будет {3, 18}. Правильно ли я это, что вы хотели сделать?

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