Cod sursa(job #1151397)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 24 martie 2014 09:08:47
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;
}