-5

私はCを使用していて、配列を持っていますt[]

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ループで誤って読み取られます。理由はわかりません。配列の値を出力するためだけにforループを使用する場合、応答は正しくなります。それ以外の場合(forループ内)は正しくありません。

ありがとうございました。

4

2 に答える 2

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]);
}
于 2012-04-04T10:25:26.257 に答える
0

したがって、tはサイズnb_of_subscribers * tagsの配列であり、avrはサイズタグの配列であると仮定します。

私が間違っていなければ、あなたがやろうとしていることは次のとおりです。

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で、配列t [6] = {0、5、1、6、2、7}であるとすると、配列avr [2]は{3、18}になります。これがあなたがやりたかったことであるという点で私は正しいですか?

于 2012-04-04T10:36:47.833 に答える