Cod sursa(job #2875748)

Utilizator stefanliciuLiciu Vasile-Stefan stefanliciu Data 22 martie 2022 11:42:09
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

char str[100005];
int i = 0;

long long paranteze();
long long adunari()
{ long long calcul = 0;
    if(str[i] == '(')
    {
        ++i;
        calcul = paranteze();
        ++i;
    }
    else
    { while(str[i] >= '0' && str[i] <= '9')
        {calcul = calcul * 10 + (str[i] - '0');
         ++i;
        }

    }
    return calcul;
}

long long inmultire()
{
    long long calcul = adunari();
    while(str[i] == '/' || str[i] == '*')
  {   ++i;
      if(str[i-1] == '/')
      {

          calcul /= adunari();
      }
      else{

        calcul *= adunari();
      }

    }

    return calcul;
}


long long paranteze()
{ long long calcul = inmultire();
  while(str[i] == '-' || str[i] == '+')
  {   ++i;
      if(str[i-1] == '-')
      {

          calcul -= inmultire();
      }
      else{

        calcul += inmultire();
      }
  }

  return calcul;
}
int main()
{
   fin>>str;
   fout<<paranteze();
    return 0;
}