Pagini recente » Cod sursa (job #184017) | Cod sursa (job #2272942) | Cod sursa (job #2169797) | Cod sursa (job #1245752) | Cod sursa (job #301827)
Cod sursa(job #301827)
#include<fstream.h>
#include<string.h>
char s[100100],e[100100];
long p[100100],v[100100],i,j,n,k;
long arb(long li,long ls)
{long i,j,min;
min=p[ls];i=ls;
for(j=ls;j>=li;j--)
if(p[j]<min)
{min=p[j];i=j;}
if(li==ls)return v[i];
switch(e[i])
{case '+':return arb(li,i-1)+arb(i+1,ls);
case '-':return arb(li,i-1)-arb(i+1,ls);
case '*':return arb(li,i-1)*arb(i+1,ls);
case '/':return arb(li,i-1)/arb(i+1,ls);}
}
int main()
{ifstream f("evaluare.in");
ofstream g("evaluare.out");
f.get(s,100100);
n=strlen(s);
for(;i<n;++i)
switch(s[i])
{case ')':j-=2;break;
case '(':j+=2;break;
case '+':p[k]=j+1;e[k++]='+';break;
case '-':p[k]=j+1;e[k++]='-';break;
case '*':p[k]=j+2;e[k++]='*';break;
case '/':p[k]=j+2;e[k++]='/';break;
default :{while(s[i]>='0'&&s[i]<='9')
{v[k]=v[k]*10+s[i]-'0';
++i;}
p[k++]=2000000000;--i;}
}
g<<arb(0,k-1);
return 0;
}