Cod sursa(job #2241906)

Utilizator AnDrEeA1915Monea Andreea AnDrEeA1915 Data 17 septembrie 2018 12:55:45
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <string.h>

using namespace std;

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

const int nmax = 100001;
char expr[nmax], *p=expr;

int expresie() ,term(), fact();

int main()
{
    fin >> expr;
    fout << expresie();
    return 0;
}


int expresie()
{
    int rez = term();
    while(*p == '+' || *p == '-')
    {
        char s = *p;
        ++p;
        int val = term();
        if(s == '+')
            rez = rez+val;
        else rez = rez-val;
    }
    return rez;
}

int term()
{
    int rez = fact();
    while(*p == '*' || *p == '/')
    {
        char s = *p;
        p++;
        int val = fact();
        if(s == '*')
            rez = rez*val;
        else rez = rez/val;
    }
    return rez;
}

int fact()
{
    if('0' <= *p and *p <= '9')
    {
        int rez =0;
        while('0' <= *p and *p <='9')
        {
            rez =rez * 10 + *p-'0';
            ++p;
        }
        return rez;
    }
    else
    {
        ++p;
        int rez = expresie();
        ++p;
        return rez;
    }
}