2016-07-01 5 views
1
#include <iostream> 
using namespace std; 


int arr[100] = {}; 
int terms; 
int maxterms; 
int sum = 0; 

int main() { 
    cout << "How many terms would you like to add?" << endl; 

    cin >> terms; 

    terms = maxterms; 

    for (int x = terms; x >= 0; x--) { 
     cout << "Number " << (((maxterms)-x) + 1) << ": "; 
     cin >> arr[(maxterms - x)]; 
     cout << endl; 
    } 

    for (int x = 0; x < maxterms; x++) { 
     sum += arr[x]; 
    } 

    cout << "Your sum is: " << sum; 

    return 0; 
} 

は、この単純なプログラムは、常に0として合計を印刷し、一度だけユーザーの入力を求められます。どのようにしてこのコードを改良して配列の連続したインデックスに書き込み、その合計を返しますか?書き込む&読書forループの使用配列から、ユーザーの入力

+0

@SilentMonkこれらはグローバルではありませんでしたので、これはもちろんUBではありません。あなたの答えは正しいものです。 – Holt

+0

@Holt、説明をありがとう。 – SilentMonk

答えて

1

maxtermsは、グローバル変数であるため、0に初期化されます。あなたは式terms = maxtermsです。ここであなたは0へのユーザー入力を上書きしています。

したがってfor (int x = 0; x < maxterms; x++)はまったく実行されません。したがって、sumは常に0です。同じことが、ユーザーの入力回数を求めるループがある場合にも当てはまります。

また、ユーザーに入力を促すループがterms+1回実行されています。

0

@ SilentMonkが指摘したように、x = maxtermsとなり、ループが終了します。 maxtermsに等しい価値を持つ

for (int x = maxterms; x >= 0; x--) 
{ 
    sum += arr[x]; 
} 

ここxを開始し、その値が0である、とarr[x]の値がsum反復ごとに追加されるまで減少:

あなたがそうのようなループを再設計することができます。

+0

あなたの継続が非常に有用であったので、私は正しい答えとして2人をチェックできたと思います。 – jmantela

+0

ご了承いただきありがとうございます。コードがエラーなくコンパイルされることを望みましょう。 –

-1

私はちょうどあなたのコードをチェックして、私はこの行を見ることで、この点を見つけ、

用語=のmaxterms。

これは、あなたがmaxtermsを初期化していないので、ランダムな値でユーザーの入力を上書きします。

私はあなたがそうのように行うmaxtermsにユーザーの入力をコピーしたいと思う:

maxterms =用語;

これを変更してみてください。

関連する問題