Pagini recente » Cod sursa (job #2763473) | Cod sursa (job #259240) | Cod sursa (job #2804352) | Cod sursa (job #2931678) | Cod sursa (job #145497)
Cod sursa(job #145497)
#include<stdio.h>
#include<string.h>
FILE*fin=fopen("evaluare.in","r");
FILE*fout=fopen("evaluare.out","w");
#define maxn 100005
int p;
char s[maxn];
int eval();int factor();
int termen()
{
int rez=0;
while(s[p]<='9'&&s[p]>='0')
{
rez=rez*10+s[p]-'0';
p++;
}
return rez;
}
int factor()
{
int rez=1;
char semn='*';
while(semn=='*'||semn=='/')
{
if(semn=='*')
{
if(s[p]=='(')
{
p++;
rez*=eval();
}
else rez*=termen();
}
else
{
if(s[p]=='(')
{
p++;
rez/=eval();
}
else rez/=eval();
}
semn=s[p];
p++;
}
p--;
return rez;
}
int eval()
{
int rez=0;
rez+=factor();
while(s[p]=='+'||s[p]=='-')
{
if(s[p]=='+'){p++;rez+=factor();}
else{p++;rez-=factor();}
}
p++;
return rez;
}
int main()
{
int n;
fscanf(fin,"%s",&s);
fclose(fin);
n=strlen(s);
s[n]=')';
p=0;
fprintf(fout,"%d",eval());
fclose(fout);
return 0;
}