Cod sursa(job #2346536)

Utilizator mirceatlxhaha haha mirceatlx Data 17 februarie 2019 20:00:02
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <cstring>
#include <cctype>
#include <stack>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100005];
int i;
int expresie();
int factor();
int termen();

int expresie()
{
	int r = termen();
	while (s[i] == '+' || s[i] == '-')
		if (s[i] == '+')
		{
			i++;
			r = r + termen();
		}
			
		else
		{
			i++;
			r = r - termen();
		}
	return r;
}
int termen()
{
	int r = factor();
	while (s[i] == '*' || s[i] == '/')
	{
		if (s[i] == '*')
		{
			i++;
			r = r * factor();
		}	
		else
		{
			i++;
			r = r / factor();
		}
			 
	}
	
	return r;

}
int factor()
{
	int r;
	if (s[i] == '(')
	{
		i++;
		 r = expresie();
		i++;
	}
	else
	{
		r = 0;
		while (isdigit(s[i]))
			r = r * 10 + s[i++] - '0';
	}
	return r;
}
void Citire(char *a)
{
	fin >> a;
}
int main()
{
	Citire(s);
	i = 0;
	fout << expresie();
	return 0;
}