Cod sursa(job #1151386)

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

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

char S[nmax], *p=S;

long termen();
long factor();

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

long termen(){
    long r=factor();
    
    if (*p=='*')
        p++, r*=factor();
    else if (*p=='/')
        p++, r/=factor();
    
    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(){
    
    fgets(S, nmax, fopen("evaluare.in","r"));
    
    out << eval();
    
    return 0;
}