Cod sursa(job #708604)

Utilizator FayedStratulat Alexandru Fayed Data 6 martie 2012 23:01:57
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream>
#include<cstring>
using namespace std;

char exp[100001];
int k=0;
int fact(),term();
ifstream f("evaluare.in");
ofstream g("evaluare.out");

int expa()
{
   int suma=term();
 while(exp[k]=='+' || exp[k]=='-')
  {
      k++;
   if(exp[k-1]=='+')

      suma+=term();

   else suma-=term();
      }
    return suma;
    }

int term()
{
    int suma=fact();
  while(exp[k]=='*' || exp[k]=='/')
  {
      k++;
    if(exp[k-1]=='*')
     suma*=fact();
     else suma/=fact();
      }
    return suma;
    }

 int fact()
 {
     int suma=0;
   if(exp[k]=='(')
  {
     k++;
   suma=expa();
     k++;
      }
   else
   {
       while(exp[k]>='0' && exp[k]<='9')
      {
          suma=suma*10+(exp[k]-'0');
        k++;

        }
       }
     return suma;
     }

 int main()
 {
     f>>exp;
  g<<expa();
   f.close();
   g.close();
   return 0;
     }