Cod sursa(job #1499588)

Utilizator Vlad_317Vlad Panait Vlad_317 Data 10 octombrie 2015 20:39:56
Problema Evaluarea unei expresii Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <stdio.h>

using namespace std;

char s[100001];
int p=0;

int E();
int F();
int T();

int E()
{
    int raspuns=T();

    while(s[p]=='+' || s[p]=='-')
    {
        if(s[p]=='-')
        {
            p++;
            raspuns-=T();
        }
        else
        {
            p++;
            raspuns+=T();
        }
    }
    return raspuns;
}

int T()
{
    int raspuns=F();
    while(s[p]=='*' || s[p]=='/')
    {
        if(s[p]=='*')
        {
            p++;
            raspuns*=F();
        }
        else
        {
            p++;
            raspuns/=F();
        }
    }
    return raspuns;
}

int F()
{
    int raspuns=0;
    if(s[p]=='(')
    {
        p++;
        raspuns=E();
        p++;
    }
    else
    {
        while(s[p]-'0'>=0 && s[p]-'0'<=9)
        {
            raspuns*=10;
            raspuns+=s[p]-'0';
            p++;
        }
    }
    return raspuns;
}

int main()
{
    FILE *fin,*fout;
    fin=fopen("evaluare.in","r");
    fout=fopen("evaluare.out","w");

    fgets(s,10000,fin);

    fprintf(fout,"%d",E());

    return 0;
}