Pagini recente » Cod sursa (job #1902483) | Cod sursa (job #2384494) | Cod sursa (job #1963167) | Cod sursa (job #2176399) | Cod sursa (job #1929953)
#include <iostream>
#include <fstream>
using namespace std;
string problema = "evaluare";
ifstream in(problema+".in");
ofstream out(problema+".out");
char s[100100];
int pos;
int termen();
int factor();
int eval()
{
int t = termen();
while(s[pos] == '+' || s[pos] == '-')
{
if(s[pos] == '+')
{
pos++;
t+=termen();
}
else if(s[pos] == '-')
{
pos++;
t-=termen();
}
}
return t;
}
int termen()
{
int r = factor();
while(s[pos] == '*' || s[pos] == '/')
{
if(s[pos] == '*')
{
pos++;
r*=factor();
}
else if(s[pos] == '/')
{
pos++;
r/=factor();
}
}
return r;
}
int factor()
{
int num=0;
if(s[pos]=='(')
{
pos++;
num=eval();
pos++;
}
else
while(s[pos]>='0'&&s[pos]<='9')
{
num=num*10+(s[pos]-'0');
pos++;
}
return num;
}
int main()
{
in.getline(s,100100);
out<<eval();
return 0;
}