Cod sursa(job #2277854)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 6 noiembrie 2018 22:19:17
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 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();
   if (exp[ix] == '+' ) {
      ix++;
      r += termen();
   } else if (exp[ix] == '-') {
      ix++;
      r -= termen();
   }
   return r;
}

long termen() {
   long r = factor();
   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;
}