Cod sursa(job #711896)

Utilizator andreip1996Paun Andrei andreip1996 Data 12 martie 2012 20:58:51
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <iostream>
#include <string.h>

using namespace std;

char s[100001];
int i=0;

int exp();
int termen();

int factor()
{
  int k=1;
  if (s[i]=='(')
  {
      i++;
      k=exp();
      if(!k) return 0;
      if(s[i]!=')') return 0;
      else i++;
  }
  else
  { int nr=0;
    while (i<strlen(s) && s[i]>='0' && s[i]<='9') {nr=nr*10+s[i]-'0' ;i++;}
    k=nr;
  }

  return k;
}

int termen()
{
  int k=factor();
  while(i<strlen(s))
   if(s[i]=='*')
      {
        i++;
        k=k*factor();
      }
      else
      if(s[i]=='/')
      {
        i++;
        k=k/factor();
      } else break;
  return k;
}

int exp()
{
  int k=termen();
  while( i<strlen(s))
    if(s[i]=='+')
     {
      i++;
      k=k+termen();
     }
     else
       if(s[i]=='-')
     {
      i++;
      k=k-termen();
     }else break;
  return k;
}


int main()
{
    ifstream fin("evaluare.in");
    fin>>s;
    ofstream fout("evaluare.out");
    fout<<exp();
    return 0;
}