Cod sursa(job #1141013)

Utilizator matei140401Iorgulescu Matei matei140401 Data 12 martie 2014 14:55:46
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>

using namespace std;
char s[100002];
int poz;
int expresie();
int factor();
int termen();
int expresie(){int rez=termen();
while(s[poz]=='+'||s[poz]=='-')
    if(s[poz]=='+')
    {
        poz++;
        rez+=termen();
    }
    else
    {
        poz++;
        rez-=termen();
    }
    return rez;
}
int termen(){
    int rez=factor();
    while(s[poz]=='/'||s[poz]=='*')
        if(s[poz]=='/')
            {
                poz++;
                rez/=factor();
            }
            else
            {
                poz++;
                rez*=factor();
            }
    return rez;
    }
int factor(){
        int rez=0,sgn=1;
        while(s[poz]=='-')
        {
            sgn=-sgn;
            poz++;
        }
        while('0'<=s[poz]&&s[poz]<='9')
            rez=rez*10+(s[poz++]-'0');
        if(s[poz]=='(')
           {
               poz++;
               rez=expresie();
               poz++;
           }
           return rez*sgn;
    }


int main()
{
    ifstream fin("evaluare.in");
    ofstream fout ("evaluare.out");
    fin>>s;
    int x;
    x=expresie();
    fout<<x;

    return 0;
}