Cod sursa(job #2877000)

Utilizator ezluciPirtac Eduard ezluci Data 24 martie 2022 00:52:46
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");

string s;   int p;

int factor();
int termen();
int eval();

int factor()
{
   int ans;
   
   if (s[p] == '(')
   {
      p++;
      ans = eval();
      p++;
   }
   else if (isdigit(s[p]))
   {
      ans = 0;
      while (isdigit(s[p]))
         ans = ans*10 + s[p++] - '0';
   }
   else
      cout << "factor()";
   
   return ans;
}


int termen()
{
   int ans = factor();

   while (s[p] == '*' || s[p] == '/')
   {
      p++;
      if (s[p-1] == '*')
         ans *= factor();
      else
         ans /= factor();
   }
   
   return ans;
}


int eval()
{
   int ans = termen();
   
   while (s[p] == '+' || s[p] == '-')
   {
      p++;
      if (s[p-1] == '+')
         ans += termen();
      else
         ans -= termen();
   }

   return ans;
}


int main()
{
   fin >> s;
   fout << eval();
   return 0;
}