Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Determination of polynomials

I need help solving this task, if anyone had a similar problem it would help me a lot.

The task is:
Write a program that calculates the degree and polynomial p(x) for a given x.

For example:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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

I did it like this:

 #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);
}

The problem arises when calculating polynomials, because I don’t know what to put as a condition in the for loop, there should be j < of the length of the array entered, that is, of degree n,
but n cannot be used as a parameter in the px function? The task must be done with the structure and functions listed.

Thanks in advance !

>Solution :

If you are not allowed to pass n to the function, you can instead just loop to MAX and make sure that all unused coefficients are zero.

In other words, just initialize all elements of p to zero

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

and let the loop be:

j < MAX

BTW: Notice that you need return sum in the function.

Further the function degree is pretty unnecessary. Consider this:

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;
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading