Flexo1515
Flexo1515

Reputation: 1017

C for/while loop not summing

for (i = 0; i < n; i++)
    {
        x[i] = (float) (i * step);
        k = 5;
        sum = 0;
        while(k > 0)
        {
            sum = sum + (1/k) * sin((k*PI*x[i])/5);
            k = k - 2;
        }
        y1[i] = (4/PI)*sum;

        y2[i] = 0*(4/PI)*sin((PI*x[i])/5);
    }

When debugging for each value of k other than 1 the sum shows as being equal to 0, am I implementing the loop correctly?

EDIT 1:

int k;
double sum;

Upvotes: 1

Views: 146

Answers (2)

SatheeshJM
SatheeshJM

Reputation: 3643

1/k will give 0. Since it is Integer Division. You will have to give 1.0/k or 1/(float)k

Upvotes: 0

Doug T.
Doug T.

Reputation: 65649

Since both 1 and k are ints -- 1/k is integer division, its always going to be 0 if k > 1. Therefore nothing is added to sum. You want 1/k to perform floating point division. Try 1.0 / k instead of 1/k.

Upvotes: 7

Related Questions