Pagini recente » Cod sursa (job #64695) | Cod sursa (job #2385975) | Cod sursa (job #1743829) | Cod sursa (job #2881571) | Cod sursa (job #1865131)
#include <iostream>
#include <stdio.h>
using namespace std;
int i;
int termen();
int expresie();
int factor();
char s[100005];
int expresie()
{
int sum=termen();
while(s[i]=='+' || s[i]=='-')
{
if(s[i]=='+')
{
i++;
sum=sum+termen();
}
if(s[i]=='-')
{
i++;
sum=sum-termen();
}
}
return sum;
}
int termen ()
{
int sum=factor();
while(s[i]=='*' || s[i]=='/')
{
if(s[i]=='*')
{
i++;
sum=sum*factor();
}
if(s[i]=='/')
{
i++;
sum=sum/factor();
}
}
return sum;
}
int factor()
{
int nr=0;
int semn=1;
if(s[i]=='-')
semn=-1;
if(isdigit(s[i]))
{
nr=s[i]-'0';
i++;
while(isdigit(s[i]))
{
nr=nr*10+(s[i]-'0');
i++;
}
nr=nr*semn;
}
else if(s[i]=='(')
{
i++;
nr=expresie();
i++;
}
return nr;
}
int main()
{
FILE *fin, *fout;
fin=fopen("evaluare.in", "r");
fout=fopen("evaluare.out", "w");
fscanf(fin, "%s", s);
fprintf(fout, "%d", expresie());
return 0;
}