2016-08-25 1 views
0

http://imageshack.com/a/img923/5162/R6tZQr.jpg, 수학이 정확하며 출력이 잘못되었습니다. 역의 합을 계산하십시오.

결과는 발생합니다. 여기에 내 코드

static void CalcN() 
{ 
    Console.Write(" "); 
    for (uint n = 1; n <= 9; n++) 
    { 
    p = (n*n*(sides-2) - n*(sides-4))/2; 
    Console.Write("{0,3} ", p); 
    sumOfRecip += (1/p); 
    } 
    Console.WriteLine("{0}",sumOfRecip); 
} 

하고 내 출력은 "N"올바른지에 대한 계산을 보여주는 있지만, 역수의 합을 추가하려고 할 때, 그것은 잘못된 것입니다. 나는 수학을 할 수 없다. 계산할 수있는 역수로 일할 라운 드.

Sum of 
n=9 recip 
--- ------ 
45 1.8000 
81 3.3398 
117 4.7504 
153 6.0827 
189 7.3620 
225 8.6031 
261 9.8152 
297 11.0046 
333 12.1756 
369 13.3316 
405 14.4750 
+1

면의 값과 sumOfRecip이 초기화되는 곳을 포함하여 모든 소스를 표시해야합니다. 또한 분수계로 정수 수학을하고 있습니까? –

+1

어디에 잘못 되었습니까? 그런 식으로 독자는 각 가치를 확인할 필요가 없습니다. – DWright

+1

sumOfRecip을 재설정해야 계속해서 더해질 수 있습니다. –

답변

1

sumOfRecip을 재설정해야 계속해서 더 이상 추가되지 않습니다. 당신이 정말로 그 함수 밖에서 그것을 필요로하지 않는

3.3398 - 1.8 = the value you want. 

당신은 CalcN() 내부 sumOfRecip 로컬 변수를해야한다. 변수를 가능한 한 로컬 변수로 만듭니다.

+0

문제는 이제'Math.Round (sumOfRecip + = (1/p), 4);'는 소수점 네 개까지 반올림하지 않습니다 –

+0

반올림하지 않으면 무엇을할까요? –

+0

너무 많은 소수점이있는 합계를 씁니다. '1.53976773116654' 블록 코드를 게시하면 코멘트에 더 많은 코드를 표시하는 방법을 알 수 있습니다. –

관련 문제