Pagini recente » Cod sursa (job #2128745) | Cod sursa (job #460215) | Cod sursa (job #193141) | Cod sursa (job #1893741) | Cod sursa (job #1318828)
#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <utility>
#include <string>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <limits>
#include <sstream>
#include <deque>
#include <bitset>
#include <complex>
#include <functional>
#include <memory>
#include <numeric>
#define x first
#define y second
typedef std::pair<int, int> pii;
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[10005], *p = s;
int term();
int merm();
int berm();
int fact();
int merm()
{
int r = berm();
while(*p == '+' || *p == '-')
{
if(*p == '+')
{
p++;
r += berm();
}
if(*p == '-')
{
p++;
r -= berm();
}
}
return r;
}
int berm()
{
int r = fact();
while(*p == '*' || *p == '/')
{
if(*p == '*')
{
p++;
r *= fact();
}
if(*p == '/')
{
p++;
r /= fact();
}
}
return r;
}
int fact()
{
int r = term();
while(*p == '^' || *p == '[')
{
if(*p == '^')
{
p++;
r = pow(r, term());
}
if(*p == '[')
{
p++;
r *= sqrt(term());
}
}
return r;
}
int term()
{
int r = 0;
if(*p =='(')
{
p++;
r = merm();
p++;
}
else
while(*p >= '0' && *p <= '9')
{
int x = int(*p) - 48;
r = r * 10 + x;
p++;
}
return r;
}
int main () {
/*#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif*/
fin.get(s, 100);
fout << merm();
return 0;
}