c++ - 我哪里错了??EXC_ARITHMETIC(代码 = EXC_I386_DIV,子代码 = 0x0)
问题描述
我不明白我错在哪里。我认为错误在于平均。线程 1:EXC_ARITHMETIC (code = EXC_I386_DIV, subcode = 0x0) 它返回给我这个错误。提前感谢那些会考虑我的要求的人。
#include <iostream>
using namespace std;
int main () {
int m, n;
int a[30];
int somma = 0;
float media = 0;
for (int i= 0; i<30; i++) {
cout<<"Inserisci il "<<(i+1)<<" elemento: "<<endl;
cin>>a[i];
cout<<endl;
}
cout<<"Inserisci le variabili m ed n tali che m<x<n"<<endl;
cout<<"m: ";
cin>>m;
cout<<"n: ";
cin>>n;
for (int i= 0; i<30; i++) {
if (a[i]>m && a[i]<n) {
somma = somma + a[i];
media = somma/i;
}
}
cout<<"La somma è: ";
cout<<somma<<endl;
cout<<"La media è: ";
cout<<media<<endl;
}
解决方案
for (int i= 0; i<30; i++) {
if (a[i]>m && a[i]<n) {
somma = somma + a[i];
media = somma/i;
}
}
如果您if
在第一次迭代中成功输入语句,您将尝试除以,0
因此您的程序崩溃
此外,您可能应该保存求和的值的数量somma
以计算平均值。假设只有最后一个数字是true
forif (a[i]>m && a[i]<n)
并且等于10
,在这种情况下你会有
if (10>m && 10<n) {
somma = somma + 10;
media = somma/29;
}
这会给你 0.344 ......即使你只求和 1 个数字
像这样的东西可以工作
int values = 0;
for (int i= 0; i<30; i++) {
if (a[i]>m && a[i]<n) {
somma = somma + a[i];
++values;
media = somma/values;
}
}
并给你求和值的平均值
推荐阅读
- sql - 如何在 WHERE 子句中排除具有相应子值的多个值 - SQL
- powershell - Powershell 输出重定向不起作用
- javascript - 我有一个包含两种语言内容的网站。如何通过单击事件更改谷歌地图信息窗口的语言?
- reactjs - 此代码如何在有关异步等待的细节中工作
- python - 在 Python 中为面向对象编程包装 C
- ruby - 无法在 RubyMine 上安装 RuboCop
- python - 使用python在xml文件中使用循环修改元素文本
- c++ - 将浮点数转换为向量
- apache-spark - 无法识别谓词“列”
在尝试使用日期(yyyy-MM-dd)和时间(hhmm)的分区对增量湖表进行重新分区时。我收到错误:
File "/usr/local/lib/python3.7/site-packages/pyspark/sql/readwriter.py", line 739, in save self._jwrite.save(path)
- r - 如何处理嵌套列表中的这个错误?