Pagini recente » Cod sursa (job #2149637) | Cod sursa (job #1821633) | Cod sursa (job #294620) | Cod sursa (job #1872184) | Cod sursa (job #1255811)
#include<fstream>
#include<cstring>
using namespace std;
char s[100001];
int expresie();
int termen();
int factor();
int k = 0;
int expresie()
{
int sum = 0;
sum += termen();
while(s[k] == '+' || s[k] == '-')
{
if(s[k] == '+')
{
k++;
sum += termen();
}
else if(s[k] == '-')
{
k++;
sum -= termen();
}
}
return sum;
}
int termen()
{
int sum = 0;
sum += factor();
while(s[k] == '*' || s[k] == '/')
{
if(s[k] == '*')
{
k++;
sum *= factor();
}
else if(s[k] == '/')
{
k++;
sum /= factor();
}
}
return sum;
}
int factor()
{
int sum = 0; int semn = 1;
if(s[k] == '-')
{
semn = -1;
k++;
}
if(s[k] == '(')
{
k++; //trecem peste '('
sum += expresie();
k++; //trecem peste ')'
return sum*semn;
}
while((s[k] >= '0') && (s[k] <= '9'))
{
sum = 10*sum + (s[k] - '0');
k++;
}
return sum*semn;
}
int main()
{
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int i;
f.get(s, sizeof(s));
g<<expresie();
return 0;
}