Pagini recente » Cod sursa (job #1761434) | Cod sursa (job #1869235) | Clasament piscot512 | Cod sursa (job #2174938) | Cod sursa (job #145552)
Cod sursa(job #145552)
#include <stdio.h>
#define Nmax 100001
char s[Nmax];
int i;
int expr();
int termen();
int factor();
int val();
int main()
{
fscanf(fopen("evaluare.in", "r"), "%s", &s);
fprintf(fopen("evaluare.out", "w"), "%d", expr());
return 0;
}
int expr()
{
int f=termen(), semn;
while (s[i]=='+' || s[i]=='-')
{
if (s[i++]=='+') semn=1;
else semn=-1;
f+=termen()*semn;
}
return f;
}
int termen()
{
int f=factor();
char semn;
while (s[i]=='*' || s[i]=='/')
{
semn=s[i++];
if (semn=='*') f*=factor();
else f/=factor();
}
return f;
}
int factor()
{
int f;
if (s[i]=='(')
{
i++;
f=expr();
i++;
return f;
}
return val();
}
int val()
{
int f=0;
while (s[i]<='9' && s[i]>='0') f = f * 10 + s[i++]-'0';
return f;
}