Cod sursa(job #1217136)

Utilizator rogoz.bogdanRogoz Bogdan rogoz.bogdan Data 6 august 2014 18:41:23
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <cstring>
#define MX 100005
using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int l,k;
char s[MX];

int expresie();

int numar()
{
    int nr=0;
    while(s[k]>='0' && s[k]<='9')
    {
        nr = nr*10 + s[k] - '0';
        k++;
    }

    return nr;
}

int factor()
{
    int nr=0;
    if(s[k]=='(')
    {
        k++;
        nr = expresie();
        k++;
    }
    else
    {
        nr = numar();
    }

    return nr;
}

int termen()
{
    int nr=factor();
    while(s[k]=='*' || s[k]=='/')
    {
        if(s[k++]=='*') nr *= factor();
        else nr /= factor();
    }

    return nr;
}

int expresie()
{
    int nr=termen();
    while(s[k]=='+' || s[k]=='-')
    {
        if(s[k++]=='+') nr += termen();
        else nr -= termen();
    }

    return nr;
}

int main()
{
    fin>>s;
    l = strlen(s);

    fout<<expresie();

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