C ++如何在给定范围内的数组中添加数字?

时间:2017-08-03 16:49:33

标签: c++ arrays

我正在为课堂作业工作,并且很难将它组合在一起。我刚刚开始学习数组,并且不确定如何在数组中获得用户输入。

这是赋值提示:创建一个程序,输入最多100个整数(空格分隔!)并输出它们的总和。例如:

1 2 3 4 5 6 7 8 9 10 55

这是我到目前为止(编辑,因为我忘了更改评论):

@Mapping

3 个答案:

答案 0 :(得分:4)

由于这是一项学习练习,我不会更正你的代码,但要解释你到目前为止所遗漏的内容:

  • 分配要求读取整数,直到没有输入为止;您的代码会提示用户提前计算,应删除。
  • 您不需要数组来存储单个数字,因为作业只询问总数。这可以动态计算:读取一个数字,将其添加到sum,然后忘记该数字。
  • 您可以使用下面使用>>运算符的简单循环读取数字,直到输入结束。

以下示例将输入限制为100个数字,或者在输入流结束时停止:

int limit = 0;
int nextNumber;
while ((limit++ != 100) && (cin >> nextNumber)) {
    ... // Process the next number
}

如果您从控制台提供程序输入(而不是输入带有数字的文件)并且您需要结束输入序列,请按 Ctrl + z 在Windows上或在UNIX上 Ctrl + d

答案 1 :(得分:1)

为了提供各种答案,std::accumulate非常酷。

http://en.cppreference.com/w/cpp/algorithm/accumulate

int sum = std::accumulate(v.begin(), v.end(), 0);

或在你的情况下

int sum = std::accumulate(arr, arr + 99, 0);

另一种功能方法是使用C ++ 17中引入的std::reduce

http://en.cppreference.com/w/cpp/algorithm/reduce

答案 2 :(得分:0)

在与教授谈论之后能够得到一个有效的代码!这是工作代码:

#include <iostream>
using namespace std;

int main() {
    // variable declarations
    int sum = 0, count = 0;
    int c;

    // array declaration
    int arr[100] = { 0 };

    // prompt user to input numbers & add
    cout << "Please enter in values to add together: ";
    for (int i = 0; i < 100; i++) {
        cin >> arr[i];
        c = cin.peek();
        sum = sum + arr[i];

        // if user presses enter, skip to outputting sum without waiting for 100 values
        if (c == '\n'){
            break;
        }
    }

    // output the sum of input
    cout << sum;

    // pause and exit
    getchar();
    getchar();
    return 0;
}