2016-02-27 67 views
-3

試圖使用此for循環來輸入循環應該運行多少次。每循環運行一次,它應該減去或增加總和,分母每改變一次循環就會改變+2。不能爲了我的生活找出它爲什麼不起作用。當輸入大於10時,我得到的答案是負的,當它應該在pi上振盪時。對嵌套if語句使用for循環總和#

#include <iostream> 
using std::cout; 
using std::cin; 
using std::endl; 

enter code here 

int main() 
{ 
int input = -100; 
double sumTotal = 4, denominator = 3; 

    while (input < 0) 
    { 
     cout << "Enter Max value of k in truncated series (non-negative): " << endl; 
     cin >> input; 
    } 
    if (input == 0) 
    { 
     sum = 4.0/1.0; 
    } 

    for (int i = 2; i < input+2; i++) 
    { 


     if (i%2==0) 
     { 
      sumTotal -= static_cast<double>(4.0)/denominator; 

     } 
     else 
     { 
      sumTotal += static_cast<double>(4.0)/denominator; 

     } 


     denominator + static_cast<double>(2); 

    } 

    cout << sumTotal << endl; 


return 0; 

}

+1

'4.0' **是**雙,爲什麼你在這裏使用劇組? –

+0

因爲我不確定該部門的工作方式。我讀過其他地方,一個整數除以2會導致問題,所以我想確保它是一個雙。 –

+0

整數不能有小數部分 –

回答

0

首先第一件事情:在static_cast是你正在做的是不必要的。在C++中,格式爲1.0的文字默認爲double。即使你使用浮動後綴,即1.0f,編譯器仍然會做正確的事情。其次,雖然我不熟悉你正在實現的算法,但我敢打賭問題在這裏:denominator + static_cast<double>(2);。此聲明對denominator的值沒有影響。

你可能需要這樣做:

denominator = denominator + 2; 

或者,

denominator += 2; 

的預期效果是修改的denominator的價值循環的下一個迭代,所以你必須將新的價值denominator

而且,似乎沒有任何不同之間:和

for (int i = 2; i < input + 2; ++i) { 
    ... 
} 

for (int i = 0; i < input; ++i) { 
    ... 
} 

因此,我建議你開始索引變量在0可讀性的緣故。

+0

謝謝!我擔心0%2或1%2不等於0.這就是爲什麼我加了+2。 –

+0

有沒有辦法讓我做出回答? –

+1

當然,在我的答案的左邊應該有一個大的0和低於一個圓圈中的複選標記。點擊圓圈標記我的答案。 –