多项式的确定
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;
}
我需要帮助解决这个任务,如果有人遇到类似的问题,那将对我有很大帮助。
任务是:
编写一个程序,计算给定 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;
}