だから、私は次の(kludgy!)中置から後置式へのコンバーターと計算機のコードを持っています(前の投稿で述べたように:単純な数値式ソルバー、みんなに感謝します!):
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main()
{
stack<char> operators;
stack<char> output;
stack<char> temp;
stack<char> answer;
string command;
cout << "=>";
cin >> command;
// "Shunting Yard" algorithm
// source: http://en.wikipedia.org/wiki/Shunting-yard_algorithm
for(int i=0; i<command.size(); i++)
{
switch(command[i])
{
case '*': case '+': case '-': case '/': case'(':
operators.push(command[i]);
break;
case ')':
while(operators.top() != '(')
{
output.push(operators.top());
operators.pop();
}
operators.pop();
break;
default:
output.push(command[i]);
break;
}
}
while(!operators.empty())
{
output.push(operators.top());
operators.pop();
}
while(!output.empty())
{
temp.push(output.top());
output.pop();
}
while(!temp.empty())
{
if(temp.top() == '+')
{
int a = atoi(&answer.top());
cout << "A=" << a << endl;
answer.pop();
int b = atoi(&answer.top());
cout << "B=" << b << endl;
answer.pop();
answer.push(b+a);
} else {
answer.push(temp.top());
}
temp.pop();
}
cout << answer.top() << endl;
system("pause");
return 0;
}
とにかく、問題は次のとおりです。たとえば、3 + 4と入力すると、結果は「&」になりますが、正しい結果は「7」になります。だから、私のコードの何が問題になっていますか?