Cod sursa(job #2532191)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 27 ianuarie 2020 15:27:04
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f ("evaluare.in") ;
ofstream g ("evaluare.out") ;
char s[100005] , *p ;
int eval() ;
int termen() ;
int factor() ;

int eval()
 {
     int r = termen() ;
     while (*p == '+' || *p == '-')
     {
         if (*p == '+')
         {
             p ++ ;
             r += termen();
         }
         else
         {
             p ++ ;
             r -= termen();
         }
     }

     return r;
 }
 int termen()
 {
     int r = factor() ;
     while(*p == '*' || *p == '/')
     {
         if (*p == '*')
         {
             p ++ ;
             r *= factor() ;
         }
         else
         {
             p ++ ;
             r /= factor() ;
         }
     }

     return r;
 }
 int factor()
 {
     int r = 0 ;
     if (*p == '(')
     {
          p ++ ;
          r = eval() ;
          p ++ ; /// Trecem de ')';
     }
     else
     {
         while (isdigit(*p))
         {
             r = r * 10 + *p - '0';
             p ++ ;
         }
     }

     return r;
 }
int main()
{
    f.getline(s,100005) ;
    p = s;

    g << eval() << '\n' ;
    f.close();
    g.close();
    return 0 ;
}