Cod sursa(job #1862696)

Utilizator FredyLup Lucia Fredy Data 30 ianuarie 2017 10:25:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;


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

char s[100010];
int dr;

int termen();
int factor();

int eval()
{
    int r=termen();

    while(s[dr]=='+' || s[dr]=='-')
    {
        if(s[dr]=='+')
        {
            dr++;
            r+=termen();
        }
        if(s[dr]=='-')
        {
            dr++;
            r-=termen();
        }
    }

    return r;

}



int termen()
{
    int r=factor();

    while(s[dr]=='*' || s[dr]=='/')
    {
        if(s[dr]=='*')
        {
            dr++;
            r*=factor();
        }
        if(s[dr]=='/')
        {
            dr++;
            r/=factor();
        }
    }

    return r;
}



int factor()
{
    int r=0;

    if(s[dr]=='(')
    {
        dr++;
        r=eval();
        dr++;
    }

    while(s[dr]>='0' && s[dr]<='9')
    {
        r=r*10+s[dr]-'0';
        dr++;
    }

    return r;
}




int main()
{
    fin>>s;
    fout<<eval();

    fin.close();
    fout.close();
    return 0;
}