Pagini recente » Istoria paginii utilizator/uaic_buruiana_oprea_ouatu | Cod sursa (job #3135706) | Cod sursa (job #1476391) | Cod sursa (job #327222) | Cod sursa (job #2149955)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i;
char s[100001];
int termen();
int factor();
int expresie()
{
int t = termen();
while(s[i] == '+' || s[i] == '-')
if(s[i] == '+')
{
i++; t += termen();
}
else
if(s[i] == '-')
{
i++;
t -= termen();
}
/*daca e plusadaug la i si t + termen
sau i creste si t - termen*/
return t;
}
int termen()
{
int t = factor();
while(s[i] == '*' || s[i] == '/')
if(s[i] == '*')
{
i++; t *= factor();
}
else
if(s[i] == '/')
{
i++; t /= factor();
}
/*cat e * sau /
daca e * i++ si t *factor
daca e / i++ t/factor*/
return t;
}
int factor()
{
int t = 0;
if(s[i] == '(')
{
i++; t = expresie(); i++;
}
else
while(s[i] >= '0' && s[i] <= '9')
{
t = t*10 + s[i] - '0'; i++;
}
return t;
/*daca s[i] == ()
i++ t = expresie() i++
elsecat timp >0 <9
t*10 _ s[i] - 0
i++*/
}
int main()
{
fin.getline(s, 100001);
fout << expresie();
return 0;
}