Pagini recente » Cod sursa (job #2380409) | Cod sursa (job #2338852) | Cod sursa (job #1402246) | Cod sursa (job #2970534) | Cod sursa (job #2135266)
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
char e[100000];
int factor(int &i);
int operatie(int &i);
int termen(int &i)
{
int nr=0;
if(e[i]=='('|| e[i]==')')
{
i++;
nr = operatie(i);
i++;
}
while(isdigit(e[i]))
{
nr=nr*10+(e[i]-'0');
i++;
}
return nr;
}
int factor(int &i)
{
int nr1, nr2;
nr1=termen(i);
while(e[i]=='/')
{
i++;
nr2=termen(i);
nr1=nr1/nr2;
}
while(e[i]=='*')
{
i++;
nr2=termen(i);
nr1=nr1*nr2;
}
return nr1;
}
int operatie(int &i)
{
int t1, t2;
t1=factor(i);
while(e[i]=='+')
{
i++;
t2=factor(i);
t1=t1+t2;
}
while(e[i]=='-')
{
i++;
t2=factor(i);
t1=t1-t2;
}
return t1;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
int x=0;
cin.get(e,100000);
cout<<operatie(x);
return 0;
}