Cod sursa(job #1109832)

Utilizator DEYDEY2Tudorica Andrei DEYDEY2 Data 17 februarie 2014 17:18:25
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.79 kb
#include <fstream>
#include<iostream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char S[1000];
int REZ[1000],krez;
int k,x;
char c;
int priority(char c)
{
       if (c=='(')
              return -1;
       if (c=='+' || c=='-')
              return 0;
       return 1;
}

int calcul(int a, int b, int op)
{
       if (op=='+')
              return a+b;
       if (op=='-')
              return a-b;
       if (op=='*')
              return a*b;
       if (op=='/')
       {
           if(b!=0)
              return a/b;
       }

}

int main()
{
       k=0;
       krez=0;
       while ((c=cin.get())!='.')
       {
              if (c=='(')
              {
                     S[++k]=c;
                     continue;
              }
              if (c==')')
              {
                     while (S[k]!='(')
                     {
                             krez--;
                             REZ[krez]=calcul(REZ[krez],REZ[krez+1],S[k]);
                             k--;
                     }
                     k--;
                     continue;
              }
              if (c>='0' && c<='9')
              {
                     cin.putback(c);
                     cin>>x;
                     REZ[++krez]=x;
                     continue;
              }
              if (c=='+' || c=='-' || c=='*' || c=='/')
              {
                     while (priority(S[k])>=priority(c))
                     {
                            krez--;
                            REZ[krez]=calcul(REZ[krez],REZ[krez+1],S[k]);
                            k--;
                     }
                     S[++k]=c;
                     continue;
              }
       }
       g<<REZ[1];
       return 0;
}