Cod sursa(job #1891382)

Utilizator FredyLup Lucia Fredy Data 23 februarie 2017 23:07:47
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

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

#define lim 100010
char ini[lim];
int k;

int termen();
int factor();

int eval()
{
    int r=termen();
    while(ini[k]=='+' || ini[k]=='-')
    {
        if(ini[k]=='+')
            k++, r=r+termen();
        if(ini[k]=='-')
            k++, r=r-termen();
    }
    return r;
}


int termen()
{
    int r=factor();
    while(ini[k]=='/' || ini[k]=='*')
    {
        if(ini[k]=='/')
            k++, r/=factor();
        if(ini[k]=='*')
            k++, r*=factor();
    }
    return r;
}


int factor()
{
    int r=0;
    if(ini[k]=='(')
        k++, r=eval(), k++;
    while(ini[k]>='0' && ini[k]<='9')
        r=r*10+ini[k]-'0', k++;
    return r;
}


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

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