Cod sursa(job #2875973)

Utilizator ralucarRogoza Raluca ralucar Data 22 martie 2022 19:15:34
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100001];

long termen(char[1000001], int&);
long factor(char[1000001], int&);

long evaluare(char s[100001], int &i){
	long t=termen(s, i);
	while(s[i]=='+' || s[i]=='-')
    {
        if(s[i]=='+')
        {
            i++;
            t+=termen(s, i);
        }
        else
        {
            i++;
            t-=termen(s, i);
        }
	}
	return t;
}

long termen(char s[100001], int &i)
{
	long f=factor(s, i);
	while(s[i]=='*' || s[i]=='/')
    {
        if (s[i]=='*')
        {
            i++;
            f*=factor(s, i);
        }
        else
        {
            i++;
            f/=factor(s, i);
        }
	}
	return f;
}

long factor(char s[100001], int &i)
{
    long e=0;
    if(s[i]=='(')
    {
        i++;
		e=evaluare(s, i);
		i++;
    }
    else
    {
        while(s[i]>='0' && s[i]<='9')
        {
            e=e*10+s[i]-'0';
			i++;
		}
    }
    return e;
}

int main()
{
    int i=0;
    f>>s;
    g<<evaluare(s,i);
    return 0;
}