ユーザーに正の整数値を要求するプログラムを作成することになっています。プログラムはループを使用して、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;
}
なぜそれが正しく機能しないのか、私は今途方に暮れています。
これを試して:
#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;
}
ループは素晴らしいです。間違っているのはループの内側にあるものです。 sum
という名前の変数が必要であり、各ステップでi+1
をsum
に追加します。ループの終わりに、sum
は正しい値を持つので、それを出力します。
あなたが試すことができます:
_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
を使用するだけです。
ループなしで機能する次の式があります。階乗の公式を見つけようとしたときに発見しました。
#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;
}
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;
}
int result = 0;
for (int i=0; i < positiveInteger; i++)
{
result = startingNumber + 1;
cout << result;
}
まず、two同じ名前の変数i
があります。これは混乱を招きます。
次に、最初はゼロであるsum
という変数を宣言する必要があります。次に、ループで、1からpositiveInteger
までの数字を追加する必要があります。その後、sum
を出力する必要があります。
ループ内のi
の値を更新しているだけです。 i
の値も毎回追加する必要があります。
i
ループ内でfor
の値を更新することは決して良い考えではありません。 for
ループインデックスは、カウンタとしてのみ使用する必要があります。あなたの場合、ループ内でi
の値を変更すると、あらゆる種類の混乱が発生します。
total
までの数値の合計を保持する変数i
を作成します。
そう
for (int i = 0; i < positiveInteger; i++)
total += i;