Cod sursa(job #832245)

Utilizator anca_gheorgheGheorghe Anca Elena anca_gheorghe Data 10 decembrie 2012 09:35:21
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("evaluare.in");
ofstream out("evaluare.out");

char s[100001], *p;

int expresie();
int termen();
int factor();
bool cifra(char c);

int expresie()
{
    int s=termen();
    while(*p=='+'||*p=='-')
    {
        if(*p=='+')
        {
            p++;
            s+=termen();
        }
        else{
            p++;
            s-=termen();
        }
    }
    return s;
}
int termen()
{
    int s=factor();
    while(*p=='*'||*p=='/')
    {
        if(*p=='*')
        {
            p++;
            s*=factor();
        }
        else{
            p++;
            s/=factor();
        }
    }
    return s;
}
int factor()
{
    int val=0, semn=1;
    while(*p=='-')
    {
        p++;
        semn=-semn;
    }
    if(*p=='(')
    {
        p++;
        val=expresie();
        p++;
        return semn*val;
    }
    while(cifra(*p))
    {
        val=val*10+(*p-'0');
        p++;
    }
    return semn*val;
}
bool cifra(char c)
{
    if('0'<=c && c<='9')
    {
        return true;
    }
    return false;
}
int main()
{
    int sum;
    in.getline(s,100000);
    p=s;
    sum=expresie();
    out<<sum<<'\n';
    return 0;
}