gpt4 book ai didi

c - 评估多项式,使用动态分配的系数数组,我做错了什么?

转载 作者:行者123 更新时间:2023-11-30 16:55:42 25 4
gpt4 key购买 nike

我要求提供系数的值,将它们存储在动态分配的数组中,变量的值和多项式的次数,但是应该包含多项式值的变量 p 的值却没有初始化后得到更新。我尝试使用值 x=3, n=3 a(n...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;
}

最佳答案

a->nelem == n;

是与未使用的值的比较,而不是赋值。

<小时/>
p= a->arr[2];

应该是

p= a->arr[n];
<小时/>
a = malloc(sizeof(struct dynamic_arr)+sizeof(int)*(n+1));

内存不足,因为所使用的数组的数据类型为 8byte double,而不是 4byte int

关于c - 评估多项式,使用动态分配的系数数组,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40207695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com