„C/C++“ Beispiel 3: Polynomauswertung

Diese Frage erfordert die Realisierung einer Funktion zur Berechnung der Ordnung des Polynoms f(x)= der Wert am Punkt nmit dem Koeffizienten von a[0] ....a[n]Fügen Sie hier eine Bildbeschreibung einx

Definition der Funktionsschnittstelle:

double f( int n, double a[], double x );

Wo nist die Ordnung des Polynoms, a[]wo ist der Koeffizient gespeichert und xist der gegebene Punkt. Die Funktion soll f(x)den Wert des Polynoms zurückgeben.

Beispielhafter Schiedsrichtertestablauf:

#include <stdio.h>

#define MAXN 10

double f( int n, double a[], double x );

int main()
{
    
    
    int n, i;
    double a[MAXN], x;
    
    scanf("%d %lf", &n, &x);
    for ( i=0; i<=n; i++ )
        scanf("%lf", &a[i]);
    printf("%.1f\n", f(n, a, x));
    return 0;
}

/* 你的代码将被嵌在这里 */

Eingabebeispiel:

2 1.1
1 2.5 -38.7

Beispielausgabe:

-43.1

antworten:

Fügen Sie hier eine Bildbeschreibung ein

Aus der Formel in der Abbildung lässt sich Folgendes erkennen:

Die gesamte Summierung kann in zwei Teile unterteilt werden: a[0]+a[1]+...a[n] und Summierung von x von 0 bis n-ter Potenz

Dann schreiben wir den ersten Teil des Codes nach der Idee:

int sum1=0;
for(j=0;j<=n;j++)
{
    
    
	sum1+=a[j];
}

Der zweite Teil des Codes:

int sum2=0;
for(j=0;j<=n;j++)
{
    
    
    sum2*=x;
}

Nachdem ich dies geschrieben habe, muss es viele nachdenkliche Freunde geben, die feststellen werden, dass hier ein Problem vorliegt. Wenn j = 0 ist, sollte die 0. Potenz von x 0 sein. Aus der zweiten Schleife sollte sum2 sum2 * = x sein, also sum2 = 0 beim ersten Durchlaufen der Schleife. Und das Ergebnis des Codes hier ist sum2=x, dann müssen wir den Code neu anordnen:

int sum2 = 0;
for (j = 0; j <= n; j++)
{
    
    
    if (j == 0)
        sum2 = 1.0;
    else
        sum2 *= x;
}

Zusammenfassend sind die beiden Codeteile wie folgt integriert:

double f(int n,double a[],double x)
{
    
    
    int j=0;
    double sum1=1,sum=0;
    for(j=0;j<=n;j++)
    {
    
    
        if(j==0)
            sum1=1.0;
        else
            sum1*=x;
        sum+=a[j]*sum1;
    }
    return sum;
}

Dies ist das Ende der heutigen Frage zum Teilen der C-Sprache. Bis zum nächsten Mal ~

Supongo que te gusta

Origin blog.csdn.net/hsjsiwkwm/article/details/130919867
Recomendado
Clasificación