Cod sursa(job #2910080)

Utilizator maiaauUngureanu Maia maiaau Data 18 iunie 2022 12:49:49
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;

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

const int N = 1e5;

char e[N + 5], *p;

int suma();
int factor();
int termen();

int main()
{
    p = e;
    f >> p;
    g << suma();
    
    return 0;
}

int suma(){
    int rez = termen();
    while (*p == '+' || *p == '-')
        if (*p == '+'){
            p++;
            rez += termen();
        }
        else {
            p++;
            rez -= termen();
        }
    return rez;
    
}

int termen(){
    int rez = factor();
    while(*p == '*' || *p == '/'){
        if(*p == '*') {
            p++;
            rez *= factor();
        }
        else { 
            p++;
            rez /= factor();
        }
    }
    return rez;
}

int factor(){
    int rez = 0;
    if(*p == '('){
        p++;
        rez = suma();
        p++;
        return rez;
    }
    while(isdigit(*p)){
        rez = rez * 10 + *p - '0';
        p++;
    }
    return rez;
}