1. ホーム
  2. c

[解決済み] Cプログラムで「配列の添え字が整数でない」。

2022-02-15 14:08:56

質問

deviation 関数は次のようなエラーを投げます。 "Array subscript is not an integer" . もし、エラーの原因を突き止められるなら、感謝します。

float average(float data[], int n) {
    float total = 0;
    float *p = data;

    while (p < (data + n)) {
        total = total + *p;
        p++;
    }

    return total / n;
}

float deviation(float data[], int n) {
    float data_average = average(data, n);
    float total;
    float *p = data;

    while (p < (data + n)) {
        total += (data[p] - data_average) * (data[p + 1] - data_average);
    }

    return total / 2;
}

解決方法は?

p はfloatへのポインタです。そのため、エラーが発生するのです。

float *p, total;

...

total += (datos[p]-prom)*(datos[p+1]-prom);

のみを使用することができます。 ints をC言語の配列インデックスとして使用します。