Cod sursa(job #719140)

Utilizator andu04Popa Andi andu04 Data 21 martie 2012 14:55:16
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;

char s[100000];
int poz=0,eval,lung;

int adunare(),inmultire(),termen();

int adunare()
{
    int x=inmultire();
    while (s[poz]=='+' || s[poz]=='-')
    {
        if (s[poz]=='+')
        {
            poz++;
            x+=inmultire();
        }
        if (s[poz]=='-')
        {
            poz++;
            x-=inmultire();
        }
    }
    return x;
}

int inmultire()
{
    int x=termen();
    while(s[poz]=='*' || s[poz]=='/')
    {
        if (s[poz]=='*')
        {
            poz++;
            x*=termen();
        }
        if (s[poz]=='/')
        {
            poz++;
            x/=termen();
        }
    }
    return x;
}

int termen()
{
    int x=0;
    if (s[poz]=='(')
    {
        poz++;
        x=adunare();
        poz++;
        return x;
    }
    while(s[poz]>='0' && s[poz]<='9')
        x=x*10+s[poz]-'0',poz++;
    return x;
}

void citire()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);

    scanf("%s",s);
    lung=strlen(s);
    eval=adunare();
    printf("%d\n",eval);

}

int main()
{
    citire();
    return 0;
}