Pagini recente » Cod sursa (job #2093749) | Cod sursa (job #2731104) | Cod sursa (job #811624) | Cod sursa (job #2030837) | Cod sursa (job #1865877)
#include <cstdio>
#include <cctype>
FILE *fin,*fout;
char ch;
int e();
int t();
int f();
int e()
{
int ans=t();
while(ch=='+' || ch=='-')
{
if(ch=='+')
{
ch=fgetc(fin);
ans+=t();
}
else
{
ch=fgetc(fin);
ans-=t();
}
}
return ans;
}
int t()
{
int ans=f();
while(ch=='*' || ch=='/')
{
if(ch=='*')
{
ch=fgetc(fin);
ans*=f();
}
else
{
ch=fgetc(fin);
ans/=f();
}
}
return ans;
}
int f()
{
int ans=0;
if(ch=='(')
{
ch=fgetc(fin);
ans=e();
ch=fgetc(fin);
}
else
{
signed char s=1;
if(ch=='-')
s=-1,ch=fgetc(fin);
while(isdigit(ch))
{
ans=ans*10+ch-'0';
ch=fgetc(fin);
}
ans*=s;
}
return ans;
}
int main()
{
fin=fopen("evaluare.in","r");
fout=fopen("evaluare.out","w");
ch=fgetc(fin);
fprintf(fout,"%d",e());
fclose(fin);
fclose(fout);
return 0;
}