Pagini recente » Cod sursa (job #329254) | Cod sursa (job #2831262) | Cod sursa (job #802469) | Cod sursa (job #2093310) | Cod sursa (job #2049190)
#include <fstream>
#include <stack>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
char expresie[100001];
stack <char> stivasemn[100001];
stack <char> stivaeval[100001];
int i,nr;
int main(){
fin>>expresie;
for(i=1;expresie[i]!=0;i++){
if(expresie[i]>='0' && expresie[i]<='9'){
while(expresie[i]>='0' && expresie[i]<='9'){
nr=nr*10+expresie[i]-'0';
++i;
}
//--i;
stivaeval.push(nr);
continue;
}
if(expresie[i]=='*' || expresie[i]=='/'){
while(!stivasemn.empty() && (stivasemn.top()=='*' || stivasemn.top()=='/')){
stivaeval.push(stivasemn.top());
stivasemn.pop();
}
}
if(expresie[i]=='+' || expresie[i]=='-'){
while(!stivasemn.empty() && stivasemn.top()!='('){
stivaeval.push(stivasemn.top());
stiva.pop();
}
}
if(expresie[i]==')'){
while(!stivasemn.empty()){
stivaeval.push(stivasemn.top());
stiva.pop();
}
}
stivasemn.push(expresie[i]);
}
while(!stivaeval.empty()){
if(stivaeval.top()=='+' || stivaeval.top()=='-' || stivaeval.top()=='*' || stivaeval.top()=='/'){
semn=stivaeval.top();
stivaeval.pop();
b=stivaeval.top();
stivaeval.pop();
a=stivaeval.top();
stivaeval.pop;
if(semn=='+')
stivaeval.push(a+b);
if(semn=='-')
stivaeval.push(a-b);
if(semn=='*')
stivaeval.push(a*b);
if(semn=='/')
stivaeval.push(a/b);
}
}
return 0;
}