Pagini recente » Cod sursa (job #1982848) | Cod sursa (job #1427981) | Cod sursa (job #1656403) | Cod sursa (job #1094667) | Cod sursa (job #3203003)
// #include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string a;
int i;
int numar();
int termen();
int factor();
int expresie();
int numar()
{
int num = 0;
while (a[i] >= '0' && a[i] <= '9')
num = (a[i++] - '0') + num * 10;
return num;
}
int factor()
{
int num;
if (a[i] == '(')
{
i++;
num = expresie();
i++;
}
else
num = numar();
return num;
}
int termen()
{
int num = factor();
while (a[i] == '*' || a[i] == '/')
{
if (a[i] == '*')
{
i++;
num *= factor();
}
else if (a[i] == '/')
{
i++;
num /= factor();
}
}
return num;
}
int expresie()
{
int num = termen();
while (a[i] == '+' || a[i] == '-')
{
if (a[i] == '+')
{
i++;
num += termen();
}
else if (a[i] == '-')
{
i++;
num -= termen();
}
}
return num;
}
int main()
{
getline(cin, a);
cout << expresie();
return 0;
}