首页 > 解决方案 > 我哪里错了??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;
}
    

标签: c++

解决方案


for (int i= 0; i<30; i++) {
    
    if (a[i]>m && a[i]<n)  {
        somma = somma + a[i];
        media = somma/i;
    }
}

如果您if在第一次迭代中成功输入语句,您将尝试除以,0因此您的程序崩溃

此外,您可能应该保存求和的值的数量somma以计算平均值。假设只有最后一个数字是trueforif (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;
    }
}

并给你求和值的平均值


推荐阅读