Cod sursa(job #3342569)

Utilizator Patric3001Bratu Patri Patric3001 Data 24 februarie 2026 19:09:27
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
using namespace std;
char S[100010];
char *p=S;
ifstream in("evaluare.in");
ofstream out("evaluare.out");

long int termen();
long int factor();
long int eval(){

    long r=termen();
    while(*p=='+' || *p=='-'){
        switch(*p){

        case '+':
            p++;
            r +=termen();
            break;
        case '-':
            p++;
            r-=termen();
            break;



        }
    }
    return r;


}

long int termen(){

  long r=factor();
  while(*p=='*'|| *p =='/'){
    switch(*p){
    case '*':
        p++;
        r*=factor();
        break;
    case '/':
        p++;
        r/=factor();
        break;


    }
  }


    return r;
}

long int 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.getline(S,100010);
    out<<eval();
    return 0;
}