Cod sursa(job #711951)

Utilizator andreip1996Paun Andrei andreip1996 Data 12 martie 2012 21:42:04
Problema Evaluarea unei expresii Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <iostream>
#include <string.h>

using namespace std;

char s[100010];
int i=0;

int exp();
int termen();

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

  return k;
}

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

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


int main()
{
    freopen ("evaluare.in","r",stdin);
    freopen ("evaluare.out","w",stdout);
    scanf("%s",s);
    printf("%d",exp());
    return 0;
}