c++ 计算中,当除数为零时让其自动跳过不参与计算的处理方法

大家好,请教下,在计算中,当遇到除数为零时,希望程序自动跳过该计算,不让这种情况参与计算,要如何处理呢
我当前是这样进行的,打要出问题:
if (Dlg.m_strX1 <= 0)
{
A1 = 0;
B1 = 0;

    }
    else
    {
        A1 = 1;
        B1 = 5 * Dlg.m_stru1 / Dlg.m_strX1;

    }

如果只是针对除数为0想跳过的话,用if来个选择执行或者用个try-catch-finally捕获异常。
但是针对你的代码,感觉看不出是什么意思啊~

为什么不将if (Dlg.m_strX1 <= 0)中的<去掉呢?其实主要还是看具体的需求....

可以用if循环语句的continue语句,if被除数为零,continue
跳过此次循环

你这个已经跳过了Dlg.m_strX1等于零的情况了

可是我在后面求和时,double AA=A1+A2+A3+A4;
当m_stru1输入整数时则正确,当输入小数时则显示3倍AA的数据呢,不知道原因在哪儿

if (Dlg.m_strX1 <= 0)//编辑对话框输入数据double,如果为零将会形成除数为零的情况,在B1公式中
{
A1 = 0;//计数用
B1 = 0;//计算公式用
}
else
{
A1 = 1;
B1 = 5 * Dlg.m_stru1 / Dlg.m_strX1;

}

用异常处理

  • C++处理异常的方法 如果在执行一个函数过程中出现异常,可以不在本函数 中立即处理,而是发出一个消息,传给它的上一级来解决, 如果上一级函数也不能处理,就再传给其上一级,如此逐级 上传,如果到最高一级还无法处理,运行系统一般会自动调 用系统函数terminate,由它调用abort终止程序。

  • C++异常处理机制 C++处理异常的机制由抛出、检查和捕获三部分组成, 分别由三种语句来完成: throw 表达式; 在某种情况下,throw语句中可以不包括表达式; p try(检查): p throw(抛出):使用throw语句,其格式如下: p catch(捕获)
    异常的检查和捕获 异常的检查和捕获使用try语句和catch语句,格式如下: try { 被检查的符合语句; } catch(异常类型声明1) { 进行异常处理的复合语句1;} catch(异常类型声明2) { 进行异常处理的复合语句2;} ……
    异常处理的说明 将容易引起异常的语句或程序段放在try块的花括号中;
    如果在执行try块内的复合语句过程中没有发生异常,则 catch子句不起作用,流程转到catch子句后面的语句继续 执行; p 如果在执行try块内的复合语句过程中发生异常,则throw 语句抛出一个异常信息; pthrow抛出的异常信息传到try_catch结构,系统寻找与之 匹配的catch子句;
    异常处理的说明 执行异常处理语句后,程序继续执行catch子句后面的语 句。 一个try_catch结构中只能有一个try,但却可以有多个 catch块,以便与不同的异常信息匹配,catch后边的括号 中,一般只写异常信息的类型名; p 如果在catch子句中没有指定异常信息的类型,而用了三 点删节号“…”,则表示它可以捕获任何类型的异常信息; C++中,一旦抛出一个异常,而程序不捕获的话,那么系 统就会调用一个系统函数terminate,由它调用abort终 止程序。
    举两个例子
    #例1 处理除数为0的异常。

    int Div(int x,int y) 
    { if(y==0) 
    throw y; 
    return x/y; 
    } i
    nt main() 
    { try 
      { cout<<"7/3="<<Div(7,3)<<endl; 
      cout<<"5/10="<<Div(5,10)<<endl; 
          cout<<"next"<<endl; 
              }
              catch (int) { cout<<"除数为0,错误!"<<endl; }cout<<"End!"<<endl; return 0; } 
    

    #例2 求输入数的平方根。

    #include<iostream>
    #include<cmath>
    using namespace std; 
    double Sqrt(double a)
    { if(a<0) throw 1; 
    return sqrt(a);
    } 
    int main()
    { int x; 
    while(1) 
        { cout<<"请输入一个数:"; 
          cin>>x; 
        try{ cout<<x<<"的平方根是:"<<Sqrt(x)<<endl; }
        catch(int){ cout<<x<<"是负数,不能求平方根!\n"; exit(0); } 
            }
          return 0; }