Cod sursa(job #1255806)

Utilizator dragos_musanMusan Dragos dragos_musan Data 5 noiembrie 2014 10:46:47
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include<fstream>
#include<cstring>
using namespace std;

char s[100001];

int expresie();
int termen();
int factor();

int k = 0;

int expresie()
{
    int sum = 0;
    sum += termen();
    if(s[k] == '+')
    {
        k++;
        sum += termen();
    }
    else if(s[k] == '-')
    {
        k++;
        sum -= termen();
    }
    return sum;
}

int termen()
{
    int sum = 0;
    sum += factor();
    if(s[k] == '*')
    {
        k++;
        sum *= factor();
    }
    else if(s[k] == '/')
    {
        k++;
        sum /= factor();
    }
    return sum;
}

int factor()
{
    int sum = 0; int semn = 1;
    if(s[k] == '-')
    {
        semn = -1;
        k++;
    }
    if(s[k] == '(')
    {
        k++; //trecem peste '('
        sum += expresie();
        k++; //trecem peste ')'
        return sum*semn;
    }
    while((s[k] >= '0') && (s[k] <= '9'))
    {
        sum = 10*sum + (s[k] - '0');
        k++;
    }
    return sum*semn;
}

int main()
{
    ifstream f("evaluare.in");
    ofstream g("evaluare.out");

    int i;

    f.get(s, sizeof(s));

    g<<expresie();

    return 0;
}