我需要幫助來解決這個任務,如果有人有類似的問題,它會對我有很大幫助。
任務是: 撰寫一個程式,計算p(x)給定 的次數和多項式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不能作為引數在for回圈中px功能?任務必須按照列出的結構和功能完成。
提前致謝 !
uj5u.com熱心網友回復:
如果不允許傳遞n給函式,則可以改為回圈到MAX并確保所有未使用的系數為零。
換句話說,只需將 的所有元素初始化p為零
POLYNOMIAL p = {.coef = {0} };
并讓回圈為:
j < MAX
BTW:注意你需要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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/395619.html
上一篇:如何在C#中連接二維陣列中的索引
