📄 i2p.cpp
字号:
#include<iostream.h>
#include<iomanip.h>
#include<fstream.h>
#include<string.h>
#include<ctype.h>
#define MAX 100000
#define MMIN (200000000)
int main()
{
long tmp,StringLen,p1,t1,i,len;
char st[MAX];
ifstream input("input.txt");
input >> st+1;
ofstream output("output.txt");
st[0]='(';
StringLen=strlen(st);
st[StringLen]=')'; //加括号
StringLen++;
st[StringLen]='\0';
len=strlen(st);
long *NumStack=new long [len];
char *SymbolStack=new char [len];
p1=t1=0;
for(i=0;i<StringLen;i++)
{
if (isspace(st[i])) continue;
else if (isdigit(st[i]))
{
tmp=0;
while(isdigit(st[i]))
{
tmp=tmp*10+st[i]-'0';
i++;
}
i--;
NumStack[++p1]=tmp;
}
else
{
switch (st[i]) //check
{
case '+':
case '-': //+,-
while(SymbolStack[t1]!='(')
{
NumStack[++p1]=SymbolStack[t1]-MMIN;
SymbolStack[t1--]=0;
}
SymbolStack[++t1]=st[i];
break;
case '*':
case '/':
case '%': //*,/,%
while(SymbolStack[t1]=='*' || SymbolStack[t1]=='/' || SymbolStack[t1]=='%')
{
NumStack[++p1]=SymbolStack[t1]-MMIN;
SymbolStack[t1--]=0;
}
SymbolStack[++t1]=st[i];
break;
case '(': //'('
SymbolStack[++t1]=st[i];
break;
case ')': //')'
while(SymbolStack[t1]!='(')
{
NumStack[++p1]=SymbolStack[t1]-MMIN;
SymbolStack[t1--]=0;
}
SymbolStack[t1--]=0; //pop
break;
}
}
}
for(i=1;i<=p1;i++)
if (NumStack[i]<0)
output<<char(NumStack[i]-MMIN)<<" ";
else
output<<NumStack[i]<<" ";
output<<endl;
delete[] NumStack;
delete[] SymbolStack;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -