Pagini recente » Cod sursa (job #1691235) | Cod sursa (job #2209622) | Cod sursa (job #759711) | Cod sursa (job #531236) | Cod sursa (job #296633)
Cod sursa(job #296633)
#include<fstream>
#include<string>
using namespace std;
ifstream in ("evaluare.in");
ofstream out("evaluare.out");
char a[100001],s[100001],b[250001];
int i,l,k,k1,c[100001];
int main ()
{
in.get(a,100001);
l=strlen(a);
a[l]='a';
s[0]='a';
k1=-1;
while(a[i]!='a')
{
if(a[i]=='(')
{
s[++k]='(';
i++;
}
if(a[i]==')')
{
while(s[k]!='(')
{
b[++k1]=s[k];
b[++k1]='a';
s[k]=0;
k--;
}
s[k]=0;
k--;
i++;
}
if(a[i]>='0' && a[i]<='9')
{
while(a[i]>='0' && a[i]<='9')
{
b[++k1]=a[i];
i++;
}
b[++k1]='a';
}
if(a[i]=='-' || a[i]=='+')
{
while(s[k]!='(' && s[k]!=')' && s[k]!='a')
{
b[++k1]=s[k];
b[++k1]='a';
s[k]=0;
k--;
}
s[++k]=a[i];
i++;
}
if(a[i]=='*' || a[i]=='/')
{
while(s[k]=='*' || s[k]=='/')
{
b[++k1]=s[k];
b[++k1]='a';
s[k]=0;
k--;
}
s[++k]=a[i];
i++;
}
if(a[i]=='a')
while(s[k]!='a')
{
b[++k1]=s[k];
b[++k1]='a';
s[k]=0;
k--;
}
}
s[0]=0;
b[k1]='b';
k=-1;
i=0;
while(i<k1)
{
if(b[i]=='-')
{
c[k-1]=c[k-1]-c[k];
c[k]=0;
k--;
i+=2;
}
if(b[i]=='+')
{
c[k-1]=c[k-1]+c[k];
c[k]=0;
k--;
i+=2;
}
if(b[i]=='*')
{
c[k-1]=c[k-1]*c[k];
c[k]=0;
k--;
i+=2;
}
if(b[i]=='/')
{
c[k-1]=c[k-1]/c[k];
c[k]=0;
k--;
i+=2;
}
if(b[i]>='0' && b[i]<='9')
{int c1=0;
while(b[i]>='0' && b[i]<='9')
{
c1=c1*10;
c1+=b[i]-48;
i++;
}
c[++k]=c1;
i++;
}
}
out<<c[0];
return 0;
}