error: subscripted value is neither array nor pointer nor vector при использовании структур

Рейтинг: 1Ответов: 1Опубликовано: 18.11.2014

Необходимо организовать многочлены, с которыми я оперирую в программе, в структуры.
Конечно, это совершенно необязательно в моем алгоритме, тем не менее, сделав структуры, у меня выводятся странные ошибки, точнее ошибка.

void main(void)
{
    struct quotient {
        int degree[MAX];
        float S[MAX];
    };

    struct XYZ {
        int degree[MAX];
        float Q[MAX];
    };

    struct residue {
        degree[MAX];
        float P[MAX];
    };

    struct quotient some;
    struct XYZ thing;
    struct residue wrong;
    int degree;
    int n, i;
    float M;

    printf("enter degree\n");
    scanf("%d", &degree);

    printf("enter k\n");
    for (i=0; i<=(degree); i++)
    {
        scanf("%f", &wrong[i].P);
    }

    for(i=0; i<=(degree-1); i++)
    {
        M = wrong[i].P;
        thing[i].Q = (degree-i)*M;
    }

    for (i=0; i<=(degree-2); i++)
    {
        M = thing[i].Q;
        thing[i].Q = ((float)(degree-i))*thing[i].Q;
    }
    thing[degree-1].Q=0;

    int j;

    for (i=0; i<=(degree); i++) some[i].S=0;

    for (i=0; i<3; i++)
    {
        some[i].S = wrong[i].P/thing[0].Q;
        for (j=0; j<=(degree-2); j++)
            wrong[i+j].P -= some[i].S*thing[j].Q;
    }

    for (i=(degree-2); i<=degree; i++)
    {
        printf("%f ", wrong[i].P);
    }
}    

error: subscripted value is neither array nor pointer nor vector

Что вы можете сказать по этому поводу?

Ответы

▲ 1Принят

В код не вчитывался, но сразу бросается в глаза, что вы неправильно обращаетесь к члену-массиву структуры: wrong[i].P - неправильно, нужно так: wrong.P[i]

А вашем случае получается, что вы обращаетесь к полю P экземпляра массива wrong. Если бы у вас было что-то, вроде:

struct residue
{
  float P;
};
...
struct residue wrong[SIZE];
...
wrong[i].P = <value>;

то ваша запись была бы верна.