Pagini recente » Cod sursa (job #2660382) | Cod sursa (job #2218229) | Cod sursa (job #2718926) | Cod sursa (job #1475822) | Cod sursa (job #2927626)
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
char s[100005];
int i = 1;
int expresie();
int termen();
int factor();
int constanta();
int expresie () {
int a = termen();
while(s[i] == '+' || s[i] == '-')
{
if(s[i] == '+')
{
i++;
a += termen();
}
if(s[i] == '-')
{
i++;
a -= termen();
}
}
return a;
}
int termen () {
int a = factor();
while(s[i] == '*' || s[i] == '/')
{
if(s[i] == '*')
{
i++;
a *= factor();
}
if(s[i] == '/')
{
i++;
a /= factor();
}
}
return a;
}
int factor () {
int a;
if(s[i] == '(')
{
i++;
a = expresie();
i++;
} else
{
a = constanta();
}
return a;
}
int constanta () {
int a=0;
while(s[i]>='0' && s[i]<='9'){
a=a*10+s[i]-'0';
i++;
}
return a;
}
int main()
{
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
fin >> s+1;
i=1;
fout << expresie();
}