除以零 C++ 时如何显示错误

问题描述

我正在尝试创建简单的计算器。它适用于除“/”之外的每个运算符。 但是当 num2 = 0 程序完全停止。我曾尝试使用条件语句在 num2 = 0 时输出错误消息,但它不起作用。

代码如下

#include <iostream>
#include <stdexcept>

using namespace std;


int SumNum(int& a,int& b);
int SubNum(int& a,int& b);
int DivNum(int& a,int& b);
int MulNum(int& a,int& b);


int main()
{
    char op;
    int* num1 = new (nothrow) int;
    int* num2 = new (nothrow) int;
    cout << "Enter operator either + or - or * or /: ";
    cin >> op;
    cout << "Enter first operand: ";
    cin >> *num1;
    cout<< "Enter second operand: ";
    cin >> *num2;

    switch (op)
    {
    case '+':
        cout << "Result is : " << SumNum(*num1,*num2) << endl;
        break;

    case '-':
        cout << "Result is : " << SubNum(*num1,*num2) << endl;
        break;

    case '/':
        cout << "Result is : " << DivNum(*num1,*num2) << endl;
        break;

    case '*':
        cout << "Result is : " << MulNum(*num1,*num2) << endl;
        break;

   default:
        cout << "Incorrect operator";
        break;
    }
    return 0;
}

int SumNum(int& a,int& b) {
    return a + b;
}
int SubNum(int& a,int& b) {
    return a - b;
}
int DivNum(int& a,int& b) {
    return a / b;
}
int MulNum(int& a,int& b) {
    return a * b;
}

解决方法

您可以使用以下方法更改除法大小写:

case '/':
    if (*num2 == 0) {
        cout << "Error: You can't divide by 0!" << endl;
        break;
    }
    cout << "Result is : " << DivNum(*num1,*num2) << endl;
    break;