Программа вычисления значение полинома

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define SIZE 100

int main()
{
    float z = 0;
    int i = 0;
    int y = 0;
    int n;
    int st = 0;
    int x = 0;
    float koef[SIZE];
    memset(koef, 0 , SIZE * sizeof(float));
    for (i = 0; i < SIZE; i++)
    {
        n = scanf("%f", &koef[i]);
        if(n == EOF)
            break;
        if(!n)
            break;
    }
    for (y = 0; y < SIZE; y++)
    {
        if (koef[y] == 0)
            break;
    }
    x = koef[0];
    st += y - 2;
    z += koef[1] * pow(x, st)
       + koef[2] * pow(x, st - 1)
       + koef[3] * pow(x, st - 2)
       + koef[4] * pow(x, st - 3)
       + koef[5] * pow(x, st - 4)
       + koef[6] * pow(x, st - 5)
       + koef[7] * pow(x, st - 6)
       + koef[8] * pow(x, st - 7)
       + koef[9] * pow(x, st - 8)
       + koef[10] * pow(x, st - 9)
       + koef[11] * pow(x, st- 8)
       + koef[12] * pow(x, st - 11)
       + koef[13] * pow(x, st - 12)
       + koef[14] * pow(x, st - 13)
       + koef[15] * pow(x, st - 14)
       + koef[16] * pow(x, st - 15)
       + koef[17] * pow(x, st - 16)
       + koef[18] * pow(x, st - 17)
       + koef[19] * pow(x, st - 18)
       + koef[20] * pow(x, st - 19)
       + koef[21] * pow(x, st - 20)
       + koef[22] * pow(x, st - 21)
       + koef[23] * pow(x, st - 22)
       + koef[24] * pow(x, st - 23)
       + koef[25] * pow(x, st - 24)
       + koef[26] * pow(x, st - 25);
    printf("Vysledok je :%0.2f\n", z);
    return 0;
}

При вводе целых чисел все работает прекрасно, но при вводе десятичных,что возможно за условием, в консоли выводит: -nan


Ответы (1 шт):

Автор решения: Harry

Вероятно, вы хотите вот это? Сначала вводите x, потом коэффициенты полинома?

#include <stdio.h>
#include <math.h>

int main()
{
    double z = 0;
    double x, coeff;
    int n = scanf("%lf",&x);
    if (n == EOF || n == 0) return 1;
    for(;;)
    {
        n = scanf("%lf",&coeff);
        if (n == EOF || n == 0) break;
        z = z*x+coeff;
    }
    printf("Vysledok je :%0.2lf\n", z);
}

И все же - на будущее - учтите мои замечания в комментарии!

→ Ссылка