Cod sursa(job #1816591)

Utilizator stefanidisstefan27Stefanidis Stefan stefanidisstefan27 Data 26 noiembrie 2016 17:31:12
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
const int N=10001;
char s[N];
int p=0;
int expresie();
int termen();
int factor();

int expresie()
{
 int sum=termen();
 while(s[p]=='+' || s[p]=='-')
 {
  if(s[p]=='+')
    {
     p++;
     sum+=termen();
    }
  else
   {
    p++;
    sum=-termen();
   }
 }
 return sum;
}

int factor()
{
 int semn=1,val=0;
 while(s[p]=='-')
 {
  p++;
  semn=-semn;
 }
 if(s[p]=='(')
 {
  p++;
  val=expresie();
  p++;
  return semn*val;
 }
 while(isdigit(s[p]))
 {
  val=val*10+(s[p]-'0');
  p++;
 }
 return semn*val;
}

int termen()
{
 int prod=factor();
 while(s[p]=='*' || s[p]=='/')
 {
  if(s[p]=='*')
    {
     p++;
     prod*=factor();
    }
  else
   {
    p++;
    prod/=factor();
   }
 }
 return prod;
}

int main()
{
    in.getline(s,N);
    out<<expresie();
    return 0;
}