【问题标题】:does anyone know why this keeps crashing, it started crashing when i added in the average [closed]有谁知道为什么这会一直崩溃,当我添加平均值时它开始崩溃[关闭]
【发布时间】:2017-10-24 13:17:41
【问题描述】:

有谁知道为什么这会一直崩溃,当我添加平均值时它开始崩溃。如果有人知道请帮助我编码新手,这对我来说很复杂,谢谢

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int integers;
    int average;
    int sum = 0;
    vector<int> numbers;
    cout << "Please enter in integers and enter 0 to stop: ";
    while (cin >> integers) {
        if (integers == 0) {
            sum = sum + integers;
            break;
        }
        numbers.push_back(integers);

    }
    int y = numbers.size();
    for (int i = 0; i < y; i++) {
        cout << numbers[i] << " ";
        average = (sum / integers);
        cout << "The average is: " << average << endl;
        return 0;
    }
}

【问题讨论】:

  • 看来是时候破解调试器了! ericlippert.com/2014/03/05/how-to-debug-small-programs
  • 计算average的时候看sumintegers的值。
  • 你为什么要循环计算平均值?您已经有了总和,并且知道向量的大小。平均值只是向量大小的总和。
  • 请记住,代码第一次点击返回它会返回......
  • 看起来integers 在第一个循环结束时为 0(除非您的输入失败)。此外,sum 看起来始终为 0,因为只有在 integers 为零时才向其添加 integers。这意味着average = 0/0;。使用调试器解决这个问题要比在此处发布要快得多。

标签: c++ average


【解决方案1】:

当您到达for 循环时,integers 变量的值为0。在此声明中:

average = (sum / integers);

您除以0 从而导致undefined behavior 和/或异常取决于实现。话虽如此,您没有正确计算 sumaverage

【讨论】:

  • sum 也是 0,所以表达式是 0/0。当然,同样的效果。 +1。
  • 感谢您的帮助,堆栈溢出现在讨厌我说“社区没有很好地回答您的问题”
  • @matt 尽量不要太个人化。没有人“恨你”。阅读黄色框中的链接。我有自己的问题已经结束。没什么大不了的。从经验中汲取经验,以改善您未来的查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多