Cod sursa(job #3368224)

Utilizator Alexia12345Maftei Alexia Alexia12345 Data 13 octombrie 2026 17:42:51
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

char s[100002], *p;

int factor();
int termen();
int calc();

int main()
{
	fin>>s;
	p=s;
	fout<<calc();
	return 0;
}

int factor()
{
	int r=0;
	if(*p=='(')
	{
		++p;
		r=calc();
		++p;
	}
	else
	{
		while(isdigit(*p))
		{
			r=r*10+*p-'0';
			++p;
		}
	}
	return r;
}
int calc()
{
	int r=termen();
	while(*p=='+' or *p=='-')
	{
		if(*p=='+')
		{
			++p;
			r+=termen();
		}
		else
		{
			p++;
			r-=termen();
		}
	}
	return r;
}
int termen()
{
	int r=factor();
	while(*p=='*' or *p=='/')
	{
		if(*p=='*')
		{
			++p;
			r*=factor();
		}
		else
		{
			++p;
			r/=factor();
		}
	}
	return r;
}