2012-05-22 3 views
1
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); 
    } 

1이 아닌 k의 각 값을 디버깅 할 때 합계가 0 인 것으로 표시 될 때 루프를 올바르게 구현합니까?C for/while while not summing

EDIT 1 모두 1이고, k 이후

int k; 
double sum; 
+0

'k'와'sum'은 어떻게 정의됩니까 (유형은 무엇입니까?)? – ChrisWue

+0

변수는 어떤 유형입니까? 'double '이 필요할 때'ints'를 가질 수 있습니다. – twain249

답변

7

는의 int이다 - 1/K는 항상 K> 1. 따라서 아무것도 합계에 첨가되지 않은 경우 0이 될 것, integer division이다. 부동 소수점 나누기를 수행하려면 1/k를 원합니다. 1/k 대신 1.0/k을 시도하십시오.

+0

D' oh. 많이 고마워. – Flexo1515

0

1/k는 0입니다. 정수부이기 때문에. 1.0/k 또는 1/(실수) k를 부여해야합니다