Cod sursa(job #1151396)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 24 martie 2014 09:08:01
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <cstring>
using namespace std;

#define nmax 100005
ifstream in("evaluare.in");
ofstream out("evaluare.out");

char S[nmax], *p=S;

long termen();
long factor();

long eval(){
    long r=termen();
    
    while (*p=='+' || *p=='-')
        if (*p=='+'){
            p++, r+=termen();
            break;
        } else if (*p=='-'){
            p++, r-=termen();
            break;
        }
    return r;
}

long termen(){
    long r=factor();
    
    while (*p=='*' || *p=='/')
        if (*p=='*'){
            p++, r*=factor();
            break;
        } else if (*p=='/') {
            p++, r/=factor();
            break;
        }
    return r;
}

long factor(){
    long r=0;
    
    if (*p=='(')
        p++, r=eval(), p++;
    else {
        while (*p>='0' && *p<='9'){
            r=(r*10)+*p-'0';
            p++;
        }
    }
    return r;
}



int main(){
    
    in >> p;
    out << eval();
    
    return 0;
}