web-dev-qa-db-ja.com

数値の合計C ++

ユーザーに正の整数値を要求するプログラムを作成することになっています。プログラムはループを使用して、1から入力された数までのすべての整数の合計を取得する必要があります。たとえば、ユーザーが50を入力すると、ループは1、2、3、4、... 50の合計を見つけます。

しかし、何らかの理由で機能していません。forループに問題がありますが、これは私がこれまでに経験したことです。

#include <iostream>
using namespace std;

int main()
{
    int positiveInteger;
    int startingNumber = 1;
    int i = 0;

    cout << "Please input an integer up to 100." << endl;

    cin >> positiveInteger;

    for (int i=0; i < positiveInteger; i++)
    {
        i = startingNumber + 1;
        cout << i;
    }

    return 0;

}

なぜそれが正しく機能しないのか、私は今途方に暮れています。

4
soniccool

これを試して:

#include <iostream>
using namespace std;

int main()
{
    int positiveInteger;
    int startingNumber = 1;

    cout << "Please input an integer upto 100." << endl;

    cin >> positiveInteger;

    int result = 0;
    for (int i=startingNumber; i <= positiveInteger; i++)
    {
        result += i;
        cout << result;
    }

    cout << result;

    return 0;

}
4
xxcv

ループは素晴らしいです。間違っているのはループの内側にあるものです。 sumという名前の変数が必要であり、各ステップでi+1sumに追加します。ループの終わりに、sumは正しい値を持つので、それを出力します。

11

あなたが試すことができます:

_int sum = startingNumber; 
for (int i=0; i < positiveInteger; i++) {     
    sum += i;
}
cout << sum;
_

ただし、合計1+2+...+n = n*(n+1) / 2に注意する方がはるかに簡単なので、ループはまったく必要ありません。式n*(n+1)/2を使用するだけです。

1
Jiri Kriz

ループなしで機能する次の式があります。階乗の公式を見つけようとしたときに発見しました。

#include <iostream>
using namespace std;

int main() {
    unsigned int positiveInteger;
    cout << "Please input an integer up to 100." << endl;
    cin >> positiveInteger;

    cout << (positiveInteger * (positiveInteger + 1)) / 2;
    return 0;
}
0
zackery.fix

mystycs、変数iを使用してループを制御していますただしループ内のiの値を編集しています:

for (int i=0; i < positiveInteger; i++)
{
    i = startingNumber + 1;
    cout << i;
}

代わりにこれを試してください:

int sum = 0;

for (int i=0; i < positiveInteger; i++)
{
    sum = sum + i;
    cout << sum << " " << i;
}
0
Polaris878
int result = 0;


 for (int i=0; i < positiveInteger; i++)
    {
        result = startingNumber + 1;
        cout << result;
    }
0
Tony The Lion

まず、two同じ名前の変数iがあります。これは混乱を招きます。

次に、最初はゼロであるsumという変数を宣言する必要があります。次に、ループで、1からpositiveIntegerまでの数字を追加する必要があります。その後、sumを出力する必要があります。

0
Roland Illig

ループ内のiの値を更新しているだけです。 iの値も毎回追加する必要があります。

iループ内でforの値を更新することは決して良い考えではありません。 forループインデックスは、カウンタとしてのみ使用する必要があります。あなたの場合、ループ内でiの値を変更すると、あらゆる種類の混乱が発生します。

totalまでの数値の合計を保持する変数iを作成します。

そう

 for (int i = 0; i < positiveInteger; i++)
        total += i;
0
rohit89