Prosta funkcja w c - suma

0

Muszę napisać taką funkcję:

Napisz funkcję float suma(float x, float epsilon), która dla x z przedziału (0, 1) wyznaczy sumę szeregu: 1 + x/1 + x2/2 + ... + xi/i. Sumowanie przerwij jeżeli kolejny składnik będzie mniejszy od zadanej dokładności epsilon.

Napisałem coś takiego:

float suma(float x, float epsilon);

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


int main()
{
float x=1, epsilon=1/100;
printf("%f",suma(x,epsilon));


return 0;

}


float suma(float x, float epsilon)
{
float szereg=0;

for(int i=0; i<1000; i++)
{
    szereg=szereg+(pow(x,i)/i);

    if((pow(x,i))/i<epsilon)
    
    break;

}

return szereg;

}

 

Niestety nie wyświetla się poprawny wynik. Pojawia się tylko napis "inf".
Mógłby ktoś przeanalizować, co zrobiłem źle?

1

A jaki wynik oczekujesz tu : pow(x,i)/i
na pierwszym kroku pętli?

0

Dzięki... :D

1

Tak a propos:
epsilon=1E-12;
ładniejszy zapis oraz przeważnie takich dokładności się szuka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1