Pagini recente » Cod sursa (job #385451) | Cod sursa (job #1686003) | Cod sursa (job #922625) | Cod sursa (job #1096390) | Cod sursa (job #151101)
Cod sursa(job #151101)
#include <fstream.h>
#include <stdlib.h>
#include <string.h>
int rez[100001], ks, krez;
char e[100001], s[100001];
void main(){
int i=0, lg;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f>>e;
s[0]='^';
ks=0; krez=0;
lg = strlen(e);
while(i<lg){
if(e[i] >= '0' && e[i] <= '9') { rez[++krez]=0; while(e[i] >= '0' && e[i] <= '9') rez[krez]=rez[krez]*10 + e[i++]-'0'; i--;}
else if(e[i] == '(') s[++ks] = e[i];
else if(e[i] == '*' || e[i] == '/') {
while(s[ks] == '*' || s[ks] == '/'){
if(s[ks] == '*') rez[krez-1] *= rez[krez--];
else if(s[ks] == '/') rez[krez-1] /= rez[krez--];
ks--;
}
s[++ks]=e[i];
}
else if(e[i] == '+' || e[i]=='-'){
while(s[ks] == '+' || s[ks] == '-' || s[ks] == '*'){
if(s[ks] == '+') rez[krez-1] += rez[krez--];
else if(s[ks] == '-') rez[krez-1] -= rez[krez--];
else if(s[ks] == '*') rez[krez-1] *= rez[krez--];
else if(s[ks] == '/') rez[krez-1] /= rez[krez--];
ks--;
}
s[++ks]=e[i];
}
else if(e[i]==')'){
while(s[ks]!='('){
if(s[ks] == '+') rez[krez-1] += rez[krez--];
else if(s[ks] == '-') rez[krez-1] -= rez[krez--];
else if(s[ks] == '*') rez[krez-1] *= rez[krez--];
ks--;
}
ks--;
}
i++;
}
while(ks){
if(s[ks] == '+') rez[krez-1] += rez[krez--];
else if(s[ks] == '-') rez[krez-1] -= rez[krez--];
else if(s[ks] == '*') rez[krez-1] *= rez[krez--];
else if(s[ks] == '/') rez[krez-1] /= rez[krez--];
ks--;
}
g<<rez[1]<<"\n";
}