【问题标题】:For loop don't work properly for more than one array in C++对于 C++ 中的多个数组,for 循环不能正常工作
【发布时间】:2023-03-28 03:47:01
【问题描述】:

我有这个程序的 ruby​​ 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;
}

感谢您的帮助!

【问题讨论】:

  • 在您的第一个循环中,您每次都会覆盖arr 的内容。
  • 如何解决?

标签: c++ for-loop


【解决方案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;
 }

【讨论】:

  • 感谢观看,但我该如何解决呢?
  • @kirbrown 我已经添加了解决方案。请看一下。点击链接查看工作演示。
【解决方案2】:

您在循环的每次迭代中都覆盖了 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;
}

【讨论】:

  • 谢谢,但在此变体中,输出每次显示在每对之后并在第二次中断,请检查:2 -&gt; 20 10 -&gt; 30 (ok) -&gt; 30 40 -&gt; 100
猜你喜欢
  • 1970-01-01
  • 2011-02-03
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
相关资源
最近更新 更多