Cod sursa(job #2367652)

Utilizator AndreiTudorSpiruAndrei Spiru AndreiTudorSpiru Data 5 martie 2019 11:48:39
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100001];
int n,poz;
int termen();
int factor();
int evaluare()
{
    int sum = termen();
    while(s[poz]=='+'||s[poz]=='-')
    {
        if(s[poz]=='+')
        {
            poz++;
            sum=sum + termen();
        }
        else
        {
            poz++;
            sum=sum - termen();
        }
    }
    return sum;
}
int termen()
{
    int nr=factor();
    while(s[poz]=='*'||s[poz]=='/')
    {
        if(s[poz]=='*')
        {
            poz++;
            nr=nr*factor();
        }
        else
        {
            poz++;
            nr=nr/factor();
        }
    }
    return nr;
}
int factor()
{
    int nr=0;
    if(s[poz]=='(')
    {
        poz++;
        nr=evaluare();
        poz++;
    }
    else
    {
        while(s[poz]>='0'&&s[poz]<='9')
        {
            nr=nr*10+s[poz]-'0';
            poz++;
        }
    }
    return nr;

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