多项式的确定

Determination of polynomials

我需要帮助解决这个任务,如果有人遇到类似的问题,那将对我有很大帮助。

任务是: 编写一个程序,计算给定 x.

的次数和多项式 p(x)

例如:

Enter n:2 //degree of polynomial and function degree
Enter x:2
x^n=4
Enter coefficients of polynomial:
a[0]=1
a[1]=2
a[2]=3
P(x)=3*x^2 + 2*x^1 +1*x^0 = 17

我是这样做的:

 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
 #define MAX 100
 /*
 */
 typedef struct polynomial {
     double coef[MAX];
 } POLYNOMIAL;
 double degree(double ,int );
 double px(POLYNOMIAL ,double );

int main()
{
    POLYNOMIAL p;
    double x,pom;
    int n;
    printf("Enter degree (n>=0):");
    scanf("%d",&n);
    while(n<1 || n>MAX)
    {
        printf("Enter degree (n>=0):");
        scanf("%d",&n);
    }
    printf("Enter x:");
    scanf("%lf",&x);
    pom=degree(x,n);
    printf("%.2lf^%d =%lf",x,n,pom);
    printf("\nEnter coefficients of polynomial :\n");
    for(int i=0;i<=n;i++)
    {
        printf("a[%d]:",i);
        scanf("%lf",&p.coef[i]);
    }
    return 0;
}

double degree(double x,int n)
{
    double degree=1;
    if(n==0)
    {
        return 1;
    }
    for(int i=1;i<=n;i++)
    {
        degree*=x;
    }
    return degree;
}

double px(POLYNOMIAL p,double x)
{
    double sum=0;
    for(int j=0;j<"I don't know what to put here";j++)
    {
        sum+=(double)p.coef[j]*degree(x,j);
    }
    printf("%lf",sum);
}

问题出现在计算多项式的时候,因为不知道在for循环里放什么作为条件,应该有输入的数组长度的j <,也就是度数n, 但是 n 不能用作 px 函数中的参数?必须使用列出的结构和功能完成任务。

提前致谢!

如果您不允许将 n 传递给函数,您可以改为只循环到 MAX 并确保所有未使用的系数都为零。

也就是说,只需将p的所有元素初始化为零

POLYNOMIAL p = {.coef =  {0} };

循环为:

j < MAX

顺便说一句:请注意,您需要在函数中使用 return sum

此外 degree 功能是完全没有必要的。考虑一下:

double px(POLYNOMIAL p,double x)
{
    double sum=p.coef[0];
    double d = x;
    for(int j=1;j<MAX;j++)
    {
        sum+=(double)p.coef[j]*d;
        d = d * x;
    }
    printf("%lf",sum);
    return sum;
}