Cod sursa(job #1882441)

Utilizator sandupetrascoPetrasco Sandu sandupetrasco Data 17 februarie 2017 10:50:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(0);
#define tie cin.tie(0);
#define mp make_pair
#define ll long long
#define PII pair<int, int>
#define PLL pair<ll, ll>
#define zeros(x) ( (x ^ (x - 1)) & x )
  
using namespace std;
 
int n;
char s[100100];
char *p = s;

int evaluate();
int ter();

int fac()
{
	int r;
	if (*p == '(') ++p, r = evaluate(), ++p;
	else{ r = 0; while (*p >= '0' && *p <= '9') r = r * 10 + *p - '0', ++p; }
	return r;
}

int ter()
{
	int r = fac();
	while (*p == '*' || *p == '/')
	{
		if (*p == '*') ++p, r *= fac();
		else ++p, r /= fac();
	}
	return r;
}


int evaluate()
{
	int r = ter();
	while (*p == '+' || *p == '-')
	{
		if (*p == '+') ++p, r += ter(); 
		else ++p, r -= ter();
	}
	return r;
}

int main(){
    IOS tie
    ifstream cin("evaluare.in");
    ofstream cout("evaluare.out");
    cin >> s;
    cout << evaluate();
    cerr << "Fucking time elapsed: " << clock() * 1000.0 / CLOCKS_PER_SEC << " ms" << '\n';
    return 0;
}