Динамические массивы и структуры - PullRequest
0 голосов
/ 24 марта 2011

Спасибо!Мне просто нужно было привести правую часть задания к терму.

Мне нужно создать динамический массив полиномов, каждый из которых имеет динамический массив терминов.Когда я даю термину показатель степени и коэффициент, я получаю ошибку «ожидаемое выражение перед '{' токеном» ».Что я делаю неправильно при присвоении значений?

Кроме того, есть ли простой способ сохранить динамический массив терминов, упорядоченный по их показателю?Я просто планировал цикл, печатая максимальное значение, но предпочел бы хранить их по порядку.

Спасибо!

polynomialArray[index].polynomialTerm[0] = {exponent, coefficient};  // ISSUE HERE

изменить на

polynomialArray[index].polynomialTerm[0] = (Term){exponent, coefficient};

Ответы [ 4 ]

2 голосов
/ 24 марта 2011

В вашем коде есть проблема эффективности:

  if(index > (sizeof(polynomialArray)/sizeof(Polynomial)))
      polynomialArray = (Polynomial*)realloc(polynomialArray, index * sizeof(Polynomial));

как polynomialArray является указателем, я думаю, sizeof (polynomialArray) всегда будет 4 или 8 (64-битная система). Таким образом, приведенный выше оператор if будет всегда верным, пока index больше 0.

2 голосов
/ 24 марта 2011
polynomialArray[index].polynomialTerm[0]->exponent = exponent;
polynomialArray[index].polynomialTerm[0]->coefficient = coefficient; 
1 голос
/ 24 марта 2011

Если это C99, думаю, вам нужно

polynomialArray[index].polynomialTerm[0] = (Term){exponent, coefficient};
0 голосов
/ 24 марта 2011

Вы не можете приписывать такие значения (только во время объявления).

Вы должны назначить так:

polynomialArray[index].polynomialTerm[0].exponent = exponent;
polynomialArray[index].polynomialTerm[0].coefficient = coefficient;

По поводу другого вопроса, вам действительно не нужно здесь утверждать.Указатель не будет иметь значение NULL, если ему назначено значение malloc.Если нет, то лучше иметь значение NULL, поэтому вы можете проверить, не удалось ли malloc.

Чтобы упорядочить его, вам нужно упорядочить, используя какой-то алгоритм сортировки.Я думаю, что если вы ищете легкий путь, то у вас все хорошо.Если необходимо заказывать (например, приложения в реальном времени), то вам нужно переосмыслить подход.Если нет, то держи его и иди вперед!

Береги себя, Беко

...