Cod sursa(job #2277858)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 6 noiembrie 2018 22:24:21
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

long ix;
string exp;
const string num = "0123456789";

long termen();
long factor();
long eval();

long eval() {
   long r = termen();
   while (exp[ix] == '+' || exp[ix] == '-') {
      if (exp[ix] == '+' ) {
         ix++;
         r += termen();
      } else if (exp[ix] == '-') {
         ix++;
         r -= termen();
      }
   }
   return r;
}

long termen() {
   long r = factor();
   while (exp[ix] == '*' || exp[ix] == '/') {
      if (exp[ix] == '*') {
         ix++;
         r *= factor();
      } else if (exp[ix] == '/') {
         ix++;
         r /= factor();
      }
   }
   return r;
}


long factor() {
   long r = 0;
   if (exp[ix] == '(') {
      ix++;
      r = eval();
      ix++;
   } else {
      while (exp[ix] >= '0' && exp[ix] <= '9') {
         r = r * 10 + exp[ix] - '0';
         ix++;
      }
   }
   return r;
}

int main() {
   ifstream iff("evaluare.in");
   ofstream off("evaluare.out");
   iff >> exp;
   ix = 0;

   off << eval();

   return 0;
}