Cod sursa(job #2402158)

Utilizator SmokeCiocotisan Cosmin Smoke Data 10 aprilie 2019 13:26:55
Problema Evaluarea unei expresii Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.55 kb
#include <iostream>
#include <fstream>
#define MAX 1000100
using namespace std;

char expr[MAX] , *p = expr;

long expresie();
long termen();

long eval()
{
    long  r = termen();

     while(*p == '+' || *p=='-')
     {

         switch(*p)
         {
             case '+' :   ++p;
                              r = r + termen();
                              break;

            case '-' : ++p;
                            r = r - termen();
                             break;

         }
          return r;

         }
}

long termen()
{

long  r = expresie();

    while(*p == '*' || *p == '/')
    {
        switch(*p)
          {
              case '*' : ++p;
                            r= r * expresie();
                            break;

                case '/' : ++p;
                               r = r / expresie();
                               break;
          }


    }

     return r;

}

long expresie ()
    {

        long r =0 ;

        if( *p == '(' )
        {
            ++p;
            r = eval();
            ++p;
        }
        else
        {
            while(*p >= '0' && *p<='9')
            {
                r = r*10 + *p-'0';
                p++;

            }

        }

        return r;


    }




void citire()
{
    ifstream in("evaluare.in");

    in.get(expr , MAX);
    cout<<expr<<endl;

    in.close();

}

int main()
{
   citire();
   ofstream out("evaluare.out");

   out<<eval();

   out.close();

    return 0;
}