2017-09-29 24 views
-3

私のプログラムは、startValとendValで指定された範囲内のすべての数値の合計を得るために計算を実行する必要があります。私は他のやや似たような質問を見てきましたが、私はそれらから多くを引っ張っていません。誰かが私が間違って何をしているのか教えてくださいforループ、私はそれを修正することができますか?forループが出力を生成しないのはなぜですか?

#include <iostream> 
using namespace std; 

main() { 
    //Declare variables 
    int startVal; 
    int endVal; 
    int newVal; 
    int sum; 

    cout << "Enter starting value for loop (1 - 500): "; 
     cin >> startVal; 
    while (startVal<=1 || startVal>=500) { 
     cout << "Invalid starting value.\n"; 
    } 

    while(startVal>=1 && startVal<=500) { 
      cout << "Enter ending value for loop (" << startVal+1 << " - 1000): "; 
      cin >> endVal; 

      if(endVal<startVal+1 || endVal>1000) { 
       cout << "Invalid ending value.\n"; 
      } 

     } 

    for(startVal=newVal; newVal==endVal; ++newVal) { 
       sum = newVal+1; 
      } 

    cout << "The sum of the integers from " << startVal << " through " << endVal << " is " << sum << endl; 


    return 0; 
} 
+6

本当に 'for(startVal = newVal; newVal == endVal; ++ newVal)'を見てください。条件は真ですか? – NathanOliver

+1

デバッガのコードをステップ実行して、ループが正しくない理由を理解することができます。 – Blastfurnace

+0

クロージャをチェックしてください。 'while(startVal> = 1 && startVal <= 500)'は常に真であると思う。 – Ben

答えて

2

(コメントによって示されるように)、これにforループを変更してみてください:第while()ループとして

sum = 0; 
for(newVal=startVal; newVal<=endVal; ++newVal) { 
    sum += newVal; 
} 

を一部break条件を追加します。たとえば、

if((endVal<startVal+1) || (endVal>1000)) { 
    cout << "Invalid ending value.\n"; 
}else{ 
    break; 
} 
+0

最初の2つのループが動作し、すべての値を入力することができますが、forループは実行されないように見えます。 – BGD

+0

は第2のwhile()ループの問題を修正しました – Kajienk

+0

ありがとう、あなたは私を救ってくれました。私は尋ねることができます、なぜ正確に問題を壊すことを含めていないのですか? – BGD

0

具体的には、forループに2つの問題があります。ループ宣言の3つの部分は次のとおりです。 1.変数宣言:あなたの設定は間違っています 2.条件:あなたの設定が間違っている 3.インクリメント:これは問題ありません。

関連する問題