使用C++编写程序:
题目描述
给你一个简单的四则运算表达式,包含两个实数和一个运算符,请编程计算出结果
输入
表达式的格式为:s1 op s2, s1和s2是两个实数,op表示的是运算符(+,-,*,/),也可能是其他字符
输出
如果运算符合法,输出表达式的值;若运算符不合法或进行除法运算时除数是0,则输出"Wrong input!"。最后结果小数点后保留两位。
样例输入 Copy
1.0 + 1.0
样例输出 Copy
2.00
提示
除数是0,用|s2|<1e-10(即10的-10次方)判断
程序代码如下:
#include<iostream>
#include<cmath>
#include<iomanip>
//#include<vector> //顺序容器vector(向量)的头文件
#define ElemType_D double
#define ElemType_C char
using namespace std;
class F_Operation
{
public:
F_Operation(ElemType_D Num_1, ElemType_C Oper, ElemType_D Num_2) :Number_1(Num_1), Number_2(Num_2), Operator(Oper) {}; //构造函数
void GetResult();
private:
ElemType_D Number_1, Number_2;
ElemType_C Operator;
};
inline void F_Operation::GetResult()
{
if (Operator == '+')
cout << fixed << setprecision(2) << Number_1 + Number_2; //输出浮点数,保留两位小数
else if (Operator == '-')
cout << fixed << setprecision(2) << Number_1 - Number_2;
else if (Operator == '*')
cout << fixed << setprecision(2) << Number_1 * Number_2;
else if (Operator == '/') //运算符为/时的两种情况
if (fabs(Number_2) < 1e-10) //除数为0时的情况,fabs对double求绝对值
cout << "Wrong input!";
else
cout << fixed << setprecision(2) << Number_1 / Number_2;
else
cout << "Wrong input!"; //其余不合法的情况
}
/*
class F_Operation
{
public:
F_Operation(ElemType_D Num_1, ElemType_C Oper,ElemType_D Num_2); //构造函数
void GetResult();
private:
vector<ElemType_D> Number; //定义一个保存类型为double的vector对象
vector<ElemType_C> Operator; //定义一个保存类型为char的vector对象
};
inline F_Operation::F_Operation(ElemType_D Num_1, ElemType_C Oper, ElemType_D Num_2)
{
Number.push_back(Num_1); //向容器内存入元素
Operator.push_back(Oper);
Number.push_back(Num_2);
}
inline void F_Operation::GetResult()
{
if (Operator[0] == '+')
cout << fixed << setprecision(2) << Number[0] + Number[1];
else if (Operator[0] == '-')
cout << fixed << setprecision(2) << Number[0] - Number[1];
else if (Operator[0] == '*')
cout << fixed << setprecision(2) << Number[0] * Number[1];
else if (Operator[0] == '/')
if (fabs(Number[1]) < 1e-10)
cout << "Wrong input!";
else
cout << fixed << setprecision(2) << Number[0] / Number[1];
else
cout << "Wrong input!";
}
*/
int main()
{
ElemType_D Num_1, Num_2;
ElemType_C Oper;
cin >> Num_1 >> Oper >> Num_2;
F_Operation F_O(Num_1, Oper, Num_2);
F_O.GetResult();
return 0;
}