Я попросил значения коэффициентов, сохранив их в динамически распределенном массиве, значение переменной и степень многочлена, но значение переменной p, которое должно содержать значение многочлена, не получается обновляется после того, как я его инициализирую. Я пытался со значениями х = 3, п = 3 (п ... 0) = {3,3,3,3}, а возвращаемое значение равно 3 я использовал метод Горнера для вычисленияОценка полинома, используя динамически распределенный массив для коэффициентов, что я делаю неправильно?
#include <stdio.h>
#include <stdlib.h>
struct dynamic_arr
{
int nelem;
double arr[1];
};
double polynomial(struct dynamic_arr *a,int n, double x);
int main()
{
struct dynamic_arr *a;
int n;
double pl;
double x = 2;
int scancount;
do
{
printf("enter the degree of the polynomial: ");
scancount = scanf("%d", &n);
}
while (scancount == 0);
a = malloc(sizeof(struct dynamic_arr)+sizeof(int)*(n+1));
if (a == NULL)
{
exit(EXIT_FAILURE);
}
a->nelem == n;
do
{
printf("enter the coefficient of the %d degree monomial:", n);
scancount = scanf("%lf", &a->arr[n]);
while(getchar() != '\n')
;
}
while (scancount == 0 || n-- > 0);
do
{
printf("enter x :");
scancount = scanf("%lf", &x);
}
while (scancount != 1);
pl = polynomial(a,a->nelem,x);
printf("%f", pl);
free(a);
return 0;
}
double polynomial(struct dynamic_arr *a,int n, double x)
{
double p;
p= a->arr[2];
while (--n >= 0)
{
p = p*x+a->arr[n];
}
return p;
}
второй был фактически значением, которое я заменил на n во время отладки. – MatSiv97
в любом случае спасибо, я забыл – MatSiv97
изменить тип данных в sizeof (int) после изменения типа коэффициентов от int до double (я не знаю, почему я не могу редактировать свой предыдущий комментарий, даже если я его отправил по ошибке) – MatSiv97