2012-01-26 27 views
1

C++で以下のように合計を計算するにはどうすればよいですか? 次のコードを試しましたが失敗しました。基本的な数学だC++で合計を計算する

enter image description here

#include <iostream> 
using namespace std; 
int main() 
{ 
    int n, p, r = -1; 
    cin >> n; 
    for (p = 0; p < 10; p++) 
     r *= (-1); 
    cout << r << endl; 
    return 0; 
} 
+2

それはちょうど11ではないでしょうか? –

+0

これは基本的な計算で、 '1 *(10 + 1)'です。 – Flavius

+0

なぜ* n *を入力していますか?あなたの表現によると、* n *は0から始めて10になります。 – Phonon

答えて

4
#include <iostream> 
using namespace std; 
int main() 
{ 
    int p, r = 1; 
    int iSum=0; 
    // cin >> n; 

    for (p = 0; p <= 10; p++) 
    { 
     r *= (-1); 
     iSum+=r; 
    } 
    cout << iSum << endl; 
    return 0; 
} 
4

、ループは必要ありません、あなただけ-1 * (upperLimit + 1)%2を計算することができます。

シリーズを見て思う:-1 +1 -1 +1 -1 +1 ...

+0

+1はい、一般的にはx * upperLimit%2になります。 –

+0

@MRMの場合、upderLimitに応じて、正の1または0が生成されます。唯一可能な合計は-1または0です。10%2 = 0、0 * -1 = 0.11%2 = 1,1 * -1 = -1。私はこれがテレスコープシリーズとしての私の古いCalculus本にあると思う。私は確認します。 –

+0

正確ですが、これはもっと複雑な例には当てはまりません。 –

1

@Flaviusは右ですが、合計は0から始まるので、和反復しない10が、11倍の-1 * (upperLimit+1)%2なります。 upperLimit%2事は1

P.Sから始まる合計のために働く:答えるために申し訳ありませんが、私はまだちょうど登録し、コメントすることはできません。

+0

ありがとう、私はそれを認識していましたが、私はそれを修正するにはあまりにも怠惰でした。 +1とSOの歓迎。 – Flavius