Pagini recente » Profil Simon2712 | Cod sursa (job #2975781)
#include<bits/stdc++.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string expresie;
int i;
void citire()
{
in>>expresie;
}
int eval();
int termen();
int factor();
int get_nr()
{
int ans = 0;
while ( expresie[i] >= '0' && expresie[i] <= '9' && i < expresie.size() )
{
ans = ans * 10 + ( expresie[i] - '0' );
i++;
}
return ans;
}
int eval()
{
int rez = termen();
while ( expresie[i] == '+' || expresie[i] == '-' )
{
if ( expresie[i] == '+' )
{
i++;
rez += termen();
}
else
{
i++;
rez -= termen();
}
}
return rez;
}
int termen()
{
int rez = factor();
while ( expresie[i] == '*' || expresie[i] == '/' )
{
if ( expresie[i] == '*' )
{
i++;
rez *= factor();
}
else
{
i++;
rez /= factor();
}
}
return rez;
}
int factor()
{
int rez;
if ( expresie[i] == '(' )
{
i++;
rez = eval();
i++;
}
else
{
rez = get_nr();
}
return rez;
}
int main()
{
citire();
out<<eval();
return 0;
}