For循环对C ++中的多个数组不起作用

时间:2015-09-23 08:15:57

标签: c++ for-loop

我有这个程序的红宝石version&试图在C ++中做同样的事情

输入必须是:

2 # Number of pairs 
562 -881 # First pair
310 -385 # Second pair

输出:

-319
-75

一个2个数字的数组正常工作,如果对>则中断2.我的for循环有什么问题?

#include <iostream>

using namespace std;

int main() {
    int sum = 0;
    int iter;

    cin >> iter;
    int arr[2];

    for (int i=0; i<iter; i++) {
        for (int n=0; n<2; n++) {
            // Enter numbers
            cin >> arr[n];
        }
    }

    for (int num=0; num<2; num++) {
        sum+=arr[num];
    }

    for (int i=0; i<iter; i++) {
        // Get the sum of numbers
        cout << sum << endl;
    }
    return 0;
}

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

你在循环的每次迭代中都覆盖了arr的内容。尝试这样的事情(live demo here):

#include <iostream>

using namespace std;

int main() {
    int sum = 0;
    int iter;

    cin >> iter;
    int arr[2];

    for (int i=0; i<iter; i++) {
        for (int n=0; n<2; n++) {
            // Enter numbers
            cin >> arr[n];
        }
        for (int num=0; num<2; num++) {
            sum+=arr[num];
        }

        cout << sum << endl;

    }

    return 0;
}

答案 1 :(得分:1)

for (int i=0; i<iter; i++) {
    for (int n=0; n<2; n++) {
        // Enter numbers
        cin >> arr[n];
    }
}

在第一次迭代中,值在arr中输入,并且在第二次迭代中再次覆盖先前的值(如果有的话,在下一次迭代中类似)。这就是问题所在。

Solution -

#include <iostream>
using namespace std;

int main() {
    int iter;
    cin >> iter;
    int arr[2];
    int sum[iter];             // declare sum as array with iter number of elements
   for(int i=0;i<iter;i++){
        sum[i]=0;                 // initialize elements of sum to 0
     }
   for (int i=0; i<iter; i++) {
       for (int n=0; n<2; n++) {
        // Enter numbers
           cin >> arr[n];               // take iput 
           sum[i]+=arr[n];              // add numbers and store in sum
        }
    }


   for (int i=0; i<iter; i++) {
      // Get the sum of numbers
       cout << sum[i] << endl;          // print values in sum after taing all inputs 
    }
  return 0;
 }