Cod sursa(job #3157418)

Utilizator biancaivascuBianca Ivascu biancaivascu Data 15 octombrie 2023 15:24:52
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>

using namespace std;
#define MaxN 100000

char s[MaxN];
int sindex;

int adunare();

int factor()
{
  int numar;
  if(s[sindex]=='(')
  {
    sindex++;
    numar=adunare();
    sindex++;
  }
  else
  {
    numar=0;
    while(s[sindex]>='0' && s[sindex]<='9')
    {
      numar=numar*10+(s[sindex]-'0');
      sindex++;
    }
  }
  return numar;
}

int inmultire()
{
  int result;
  result=factor();
  while(s[sindex]=='*' || s[sindex]=='/')
  {
    if(s[sindex]=='*')
    {
      sindex++;
      result*=factor();

    }
    else
    {
      sindex++;
      result/=factor();

    }

  }
  return result;
}

int adunare()
{
  int result;
  result=inmultire();
  while(s[sindex]=='+' || s[sindex]=='-')
  {
    if(s[sindex]=='+')
    {
       sindex++;
      result+=inmultire();
    }
    else
    {
      sindex++;
      result-=inmultire();

    }
  }
  return result;
}
int main()
{
    ifstream in("evaluare.in");
    ofstream out("evaluare.out");
    int n, i;
    n=0;
    while(in>>s[n])
    {
      n++;
    }
    sindex=0;
    out<<adunare();
    return 0;
}