Cod sursa(job #3162624)

Utilizator YuzukyIstrate Andreea Ruxandra Yuzuky Data 29 octombrie 2023 15:49:33
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
const int MAX = 100000;
char c[MAX];
int poz;
int adunare();
int factor()
{
  int number=0;
  if(c[poz]=='(')
  {
    ++poz;
    number=adunare();
    ++poz;
  }
  else
  {
    number=0;
    while(c[poz]>='0' && c[poz]<='9')
    {
      number = number*10+c[poz]-'0';
      poz++;
    }
  }
  return number;
}

int inmultire()
{
  int res=factor();
  while(c[poz]=='*' || c[poz]=='/')
  {
      if(c[poz]=='*')
      {
        poz++;
        res*=factor();
      }
      else
      {
        poz++;
        res/=factor();
      }
  }
  return res;
}
int adunare()
{
    int res=inmultire();
    while(c[poz]=='+' || c[poz]=='-')
      if(c[poz]=='+')
      {
        poz++;
        res+=inmultire();
      }
      else
      {
        poz++;
        res-=inmultire();
      }

    return res;
}

int main()
{
    in>>c;
    poz=0;
    out<<adunare();
    return 0;
}