Cod sursa(job #236898)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 28 decembrie 2008 18:21:47
Problema Evaluarea unei expresii Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.51 kb
#include <stdio.h>

int p,;
char s[100010];
 
int unu();
int doi();
int trei(); 
 
int unu()
{
    int aux=0;
    if (s[p]=='(')
        {
            p++;
            aux=doi();
            p++;
            return aux;
         }
    while (s[p]>='0' && s[p]<='9')
           {
                //p++;
                aux=aux*10+s[p]-'0';
                p++;
            }
    return aux;
}

int doi()
{
    int aux=trei();
    
    while (s[p]=='+' || s[p]=='-')
           {
                if (s[p]=='+')
                    {   
                        p++;
                        aux+=trei();
                    }
                    else
                 if (s[p]=='-')
                     {
                            p++;
                            aux-=trei();
                        }
            }
   return aux;
}                                 

int trei()
{
    int aux=unu();
    while (s[p]=='*' || s[p]=='/')
     {
            if (s[p]=='*')
                    {
                        p++;
                        aux*=unu();
                    }
                    else
                 if (s[p]=='/')
                     {
                            p++;
                            aux/=unu();
                        }
            }
   return aux;
}

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