Cod sursa(job #711941)

Utilizator andreip1996Paun Andrei andreip1996 Data 12 martie 2012 21:35:03
Problema Evaluarea unei expresii Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 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(i<strlen(s) && (s[i]=='*' || s[i]=='/'))
      {
        if(s[i]=='*') {
                        i++;
                        k=k*factor();
                      }
        else
          {
            i++;
            k=k/factor();
            }
      }
  return k;
}

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


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