Pagini recente » Cod sursa (job #1970656) | Autentificare | Cod sursa (job #3334198) | Cod sursa (job #3316821) | Cod sursa (job #1097042)
#include<stdio.h>
char v[100000];
int i;
int eval();
int fact();
int expr();
int eval()
{
int rez=expr();
while(v[i]=='+'||v[i]=='-')
{
i++;
if(v[i-1]=='+')
rez+=expr();
else
rez-=expr();
}
return rez;
}
int expr()
{
int rez=fact();
while(v[i]=='*'||v[i]=='/')
{
i++;
if(v[i-1]=='*')
rez*=fact();
else
rez/=fact();
}
return rez;
}
int fact()
{
int rez=0;
if(v[i]=='(')
{
i++;
rez=eval();
i++;
}
else
{
while(v[i]>='0'&&v[i]<='9')
{
rez=rez*10+v[i]-'0';
i++;
}
}
return rez;
}
int main()
{
FILE *fin,*fout;
fin=fopen("evaluare.in","r");
fout=fopen("evalare.out","w");
char ch=fgetc(fin);
int cont=0;
while(ch!='\n'&&ch!=EOF)
{
v[cont]=ch;
cont++;
ch=fgetc(fin);
}
fprintf(fout,"%d",eval());
return 0;
}