Cod sursa(job #1993520)

Utilizator Neamtu_StefanStefan Neamtu Neamtu_Stefan Data 23 iunie 2017 10:53:16
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>

using namespace std;

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

char s[100002];
int k;

long termen();
long factor();

long evaluare()
{
    long nr=termen();
    while (s[k]=='+' || s[k]=='-')
        switch(s[k])
        {
            case '+':
                k++;
                nr+=termen();
                break;
            case '-':
                k++;
                nr-=termen();
                break;
        }
    return nr;
}

long termen()
{
    long nr=factor();
    while (s[k]=='*' || s[k]=='/')
        switch(s[k])
        {
            case '*':
                k++;
                nr*=factor();
                break;
            case '/':
                k++;
                nr/=factor();
                break;
        }
    return nr;
}

long factor()
{
    long nr=0;
    if (s[k]=='(')
    {
        k++;
        nr=evaluare();
        k++;
    }
    else
        while (s[k]>='0' && s[k]<='9')
        {
            nr=nr*10+s[k]-'0';
            k++;
        }
    return nr;
}

int main()
{
    fin.getline(s,100002);
    fout << evaluare();
    return 0;
}