Cod sursa(job #1729228)

Utilizator otnielMercea Otniel otniel Data 14 iulie 2016 14:24:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
char a[100000];
int lung;
int i;

long eval();
long evaluarefact();
long evaluareexpr();
long evaluareterm();

long eval()
{long z=0;

    while(a[i]>='0'&&a[i]<='9'&&i<lung)
    {

        z=z*10+(a[i]-48);

        i++;
    }
    i--;

return z;
}
long evaluarefact()
{long f;
    if(a[i]=='(')
    {
        i++;
        f=evaluareexpr();
        i++;
    }
    else
    {
        f=eval();

        i++;
    }
return f;
}
long evaluareterm()
{
    long z=evaluarefact();
    while(i<lung&&(a[i]=='*'||a[i]=='/'))
    {
        if(a[i]=='*')
        {
            i++;
            z=z*evaluarefact();
        }
        else
        {
            i++;
            z=z/evaluarefact();

        }
    }
return z;
}

long evaluareexpr()
{
    long z=evaluareterm();
    while(i<lung&&(a[i]=='+'||a[i]=='-'))
    {


        if(a[i]=='+')
        {i++;
        z=z+evaluareterm();}
        else
        {
        i++;
        z=z-evaluareterm();
        }
    }
    return z;
}

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

    char c;
    while(f>>c)
    {
        a[i]=c;
        i++;
    }

    lung=strlen(a);
    i=0;
    g<<evaluareexpr();


}