Pagini recente » Cod sursa (job #1501143) | Cod sursa (job #2511633) | Cod sursa (job #197628) | Cod sursa (job #147435) | Cod sursa (job #2728532)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout("evaluare.out");
char s[100009];
int poz;
int operatie1();// + -
int operatie2();// * /
int termen();// numar
int operatie1(){
int ans=operatie2();
while(s[poz]=='+'||s[poz]=='-'){
if(s[poz]=='+'){
poz++;
ans+=operatie2();
}
else
if(s[poz]=='-'){
poz++;
ans-=operatie2();
}
}
return ans;
}
int operatie2(){
int ans=termen();
while(s[poz]=='*'||s[poz]=='/'){
if(s[poz]=='*'){
poz++;
ans*=termen();
}
else
if(s[poz]=='/'){
poz++;
ans/=termen();
}
}
return ans;
}
int termen(){
int ans=0;
if(s[poz]=='('){
poz++;
ans=operatie1();
poz++;
return ans;
}
while(isdigit(s[poz]))
ans=ans*10+s[poz++]-'0';
return ans;
}
int32_t main()
{
fin>>s;
fout<<operatie1();
}