P1449接尾辞式(Luogu)

オリジナルタイトルポータル

ここに画像の説明を挿入
アイデア:int型を格納するスタックを定義し、入力データを変換してスタックに格納しますが、算術記号で除算し、最初の数値を進めてから2番目の数値を入力し、最後の数値を最初にスローします。今回は、上位の数値がスタックの最上位要素となり、この2つの数値に対して演算を行った後、最初の数値が捨てられ、演算結果の合計がスタックにプッシュされ、ループすることができます。

コードリファレンス

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1001;
char a[MAXN];
int sum,k;
stack <int> stk;
int main(){
    
    
    gets(a);
	for(int i=0;a[i]!='@';i++)
	{
    
    
		if(a[i]=='.')
		{
    
    
			sum=0,k=1;
			//将数据转换后存入栈中
			for(int j=i-1;j>=0&&a[j]>='0'&&a[j]<='9';j--){
    
    
                sum=sum+(a[j]-'0')*k;
                k*=10;
			}
			stk.push(sum);
			continue;
		}
		if(a[i]>='0' && a[i]<='9')
            continue;
		sum=stk.top();//栈顶元素
		stk.pop();//弹出栈顶元素
		if(a[i]=='+') sum=stk.top()+sum;
		if(a[i]=='-') sum=stk.top()-sum;
		if(a[i]=='*') sum=stk.top()*sum;
		if(a[i]=='/') sum=stk.top()/sum;
		stk.pop();
		stk.push(sum);//将sum压入栈中
    }
	cout<<sum<<endl;
	return 0;
}

おすすめ

転載: blog.csdn.net/Bertil/article/details/106794212