我正在使用的C ++程序进行括号检查,将表达式从中缀转换为后缀,计算后缀等式,并一次完成所有三个。我已经完成了括号检查。我遇到的问题在于后缀评估。我开始阅读包含方程式的文本文档到字符串行数组中。例如,行[6]包含“73 + 9 *”。因此,我想知道是否有办法简单地让字符串暂时等于每个后缀方程。
parentheses tests
x = ((1 + 2)*3
x = (1 + 2))*3
y = (z * j)/(b * 8)^2
postfix equation solving
7 3 + 9 *
5 2 + 1 9 * *
8 9 * 3 5 + -
2 + 8 4 /
infix to postfix conversion
(8 + 4) * 9
(6 + 3) * (2 * 8)
(9 * 8) – (5 + 3)
3 + (9 / 3)
Parentheses check, infix to postfix conversion, postfix evaluation
(8 + 4) * 9
(6 + 3) * (2 * 8)
(9 * 8) – (5 + 3)
3 + (9 / 3)
这是我在^^
中阅读的文件ifstream dataFile;
dataFile.open("buff.txt");
string line[20]; //Array to hold data
//read file into array
while(dataFile)
{
for(int i = 0; i < 20; i++)
{
getline(dataFile, line[i]);
}
}
dataFile.close();
上面是我用来将文本文件中的信息存储到数组中的方法^^
//POSTFIX EVALUATION
stack<int> operation;
int operand1, operand2, result, number;
string input;
string s;
for(int k = 5; k < 9; k++)
{
input = line[k];//Assigning the postfix Eq to string(?)
for(int i = 0; i < input.length(); i++)
{
if (isdigit(input[i]))
{
s = input[i];
istringstream iss(s);
iss >> number;
operation.push(number);
}
else
{
operand2 = operation.top();
operation.pop();
operand1 = operation.top();
operation.pop();
if(input[i] == '+')
{
result = operand2 + operand1;
}
else if(input[i] == '-')
{
result = operand2 - operand1;
}
else if(input[i] == '*')
{
result = operand2 * operand1;
}
else
{
result = operand2 / operand1;
}
operation.push(result);
}
}
cout << "The result is: "<<result<<endl;
}
最后,这是我的后缀评估代码^^