问题描述
我正在尝试创建简单的计算器。它适用于除“/”之外的每个运算符。 但是当 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;