表达式求值老式的计算机只能按照固定次序进行运算,华安大学就有这样一台老式计算机,计算模式为A @ B #C,@和#为输入的运算符(可能是+、*、%,须考虑计算优先级),现给出A,B,C的数值以及@和#对应的运算符,请你编写程序,验证老式计算机的运行结果。
首先声明一下,我也是个菜鸟,如果大家有更好的方法和纠错请指正。
题目
表达式求值
老式的计算机只能按照固定次序进行运算,华安大学就有这样一台老式计算机,计算模式为A @ B #C,@和#为输入的运算符(可能是+、*、%,须考虑计算优先级),现给出A,B,C的数值以及@和#对应的运算符,请你编写程序,验证老式计算机的运行结果。
输入说明:
第一行是一个整数N(|N|≤10000),表示有N组计算数据需要处理,接下来N行,每行是相应的数据,包括三个整数和两个运算符,分别对应A、@、B、#和C。
输出说明:
对每行输入的数据,输出计算结果。
输入样例:
3
1+2*3
3%2+1
5+7%9
输出样例:
7
2
12
代码
#include<iostream>
#include<string>
using namespace std;
double demo1(int a,string x,int b,string y,int c)
{
if (x == "+") {
if (y == "+") {
return a + b + c;
}
else if (y == "-") {
return a + b - c;
}
else if (y == "*") {
return a + (b * c);
}
else if (y == "/") {
return a + (b / c);
}
else if (y == "%") {
return a + (b % c);
}
}
else if (x == "-") {
if (y == "+") {
return a - b + c;
}
else if (y == "-") {
return a - b - c;
}
else if (y == "*") {
return a - (b * c);
}
else if (y == "/") {
return a - (b / c);
}
else if (y == "%") {
return a - (b % c);
}
}
else if (x == "*") {
if (y == "+") {
return a * b + c;
}
else if (y == "-") {
return a * b - c;
}
else if (y == "*") {
return a * (b * c);
}
else if (y == "/") {
return (a * b) / c;
}
else if (y == "%") {
return (a * b) % c;
}
}
else if (x == "/") {
if (y == "+") {
return a / b + c;
}
else if (y == "-") {
return a / b - c;
}
else if (y == "*") {
return a / b * c;
}
else if (y == "/") {
return a / b / c;
}
else if (y == "%") {
return a / b % c;
}
}
else if (x == "%") {
if (y == "+") {
return a % b + c;
}
else if (y == "-") {
return a % b - c;
}
else if (y == "*") {
return a % b * c;
}
else if (y == "/") {
return a % b / c;
}
else if (y == "%") {
return a % b % c;
}
}
}
int main()
{
int N=0;
cin >> N;
double result[100];
int a, b, c;
string x, y;
for (int i = 0; i < N; i++)
{
cin >> a >> x >> b >> y >> c;
result[i] = demo1(a, x, b, y, c);
}
for (int j = 0; j < N; j++) {
cout << result[j] << endl;
}
system("pause");
return 0;
}
示例
版权声明:本文为weixin_55987175原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。