1. ホーム
  2. c++

[解決済み] C++でforループを使った系列の和を求める【非公開

2022-02-03 09:15:13

質問内容

次の系列の和を計算したい。

5 + 8 + 11 + .... + 50

上記の系列とその和をforループで表示したい。次のようなコードを書きました。

#include <iostream>
using namespace std;

int main()
{
    int i, sum = 0, n = 50;
    cout << "\n\n THE SERIES IS UNDER : \n\n\n";
    i = 2;
    while(i <= n)
    {
        sum = sum + i;
        if (i == 2)
            cout << i;
        else
            cout << " + "<< i;
        i = i + 3;
    }
    cout << "\n\n\n THE SUMMATION IS "<< sum;
    return 0;
}

解決方法は?

#include<iostream>
using namespace std;

int main()
{
    cout << "\n\n THE SERIES IS UNDER : \n\n\n";

    int sum = 0;
    for (int i = 5; i < 50; i += 3) {
        cout << i << '+';
        sum += i;
    }
    cout << 50 << endl;
    sum += 50;

    cout << "\n\n\n THE SUMMATION IS " << sum << endl;
    return 0;
}

このバージョンでの変更点

  1. 以下が含まれます。 iostream の代わりに iostream.h ; この方がコンパイラ間の移植性が高い
  2. を使用することで for のループを使用すると、より簡潔で分かりやすくなります。
  3. テストは if (i == 2) cout << i; は、1回の繰り返しでのみ真となるため、時間の無駄です。その代わり、最初の項目や最後の項目は for ループを使用します。
  4. 使用方法 sum += i の代わりに sum = sum + i というのは、前者の方がより明確で効率的だからです。 ほとんどのプログラマーは、デフォルトで前者を選択します。
  5. 一般的には cout << endl をC++で使用します。とは違いがあります。 '\n'endl そうしない理由がない限り、そうしてください。投稿をご覧ください。 C++: "std::endl" vs "\n"