スタックを押して4つの演算を実現する--C++実現
問題の説明:
記号と数字からなる4つの演算を入力し、答えを出力します.注:数字は0-9のみで、記号は「+」、「-」、「*」、「/」;構成.
サンプル入力:
9+8*4+5*6+3+4/2-1
サンプル出力:
75
解題の構想:今日の授業で先生が紹介したスタック、弾スタック法はこのようなタイプの問題を解くのに非常に適しており、四則演算だけでなく、命題公式の演算や括弧の削除などもこの方法を使うことができ、理解にも難しくない.この例題の解答を通して、読者は基本的に身につけることができるはずだ.コードには詳細なコメントがあります.
記号と数字からなる4つの演算を入力し、答えを出力します.注:数字は0-9のみで、記号は「+」、「-」、「*」、「/」;構成.
サンプル入力:
9+8*4+5*6+3+4/2-1
サンプル出力:
75
解題の構想:今日の授業で先生が紹介したスタック、弾スタック法はこのようなタイプの問題を解くのに非常に適しており、四則演算だけでなく、命題公式の演算や括弧の削除などもこの方法を使うことができ、理解にも難しくない.この例題の解答を通して、読者は基本的に身につけることができるはずだ.コードには詳細なコメントがあります.
#include
#include
#include
using namespace std;
int opera[6][6]= // , , '+','-','*','/' ASCII 42 43 45 47
{ // * + 0 - 0 /
{1,1,0,1,0,1}, //* 1 1 0 1 0 1
{0,1,0,1,0,0}, //+ 0 1 0 1 0 0
{0,0,0,0,0,0}, //0 0 0 0 0 0 0
{0,1,0,1,0,0}, //- 0 1 0 1 0 0
{0,0,0,0,0,0}, //0 0 0 0 0 0 0
{1,1,0,1,0,1}, //(/)1 1 0 1 0 1
};
int main()
{
stacknum; //
stackope; //
string str;
while(cin>>str)
{
while(!num.empty())num.pop();//
while(!ope.empty())ope.pop();
for(int i=0;i='0'&&str[i]<='9')num.push(str[i]-'0');//
else
{
// cout<