Cod sursa(job #3363795)

Utilizator alexm749Musat Alexandru Nicolae alexm749 Data 22 august 2026 22:38:08
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("evaluare.in");

ofstream g("evaluare.out");

char s[100001];
int i;
int constanta();
int factor();
int termen();
int expresie()
{
	int rez=termen();
	while(s[i]=='+'||s[i]=='-')
	{
		if(s[i]=='+')
		{
			i++;
			rez+=termen();
		}
		else
		{
			i++;
			rez-=termen();
		}
	}
	return rez;
}

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

int factor()
{
	int rez;
	if(s[i]=='(')
	{
		i++;
		rez=expresie();
		i++;
	}
	else return constanta();
	return rez;
}

int constanta()
{
	int rez=0;
	while(s[i]>='0'&&s[i]<='9')
	{
		rez=rez*10+(int)(s[i]-'0');
		i++;
	}
	return rez;
}

int main()
{
	f.getline(s,100001);
	g<<expresie();
	return 0;
}