Cod sursa(job #3209458)

Utilizator cristian46290Petre Cristian cristian46290 Data 2 martie 2024 14:25:14
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <cctype>
#include <cstring>

using namespace std;

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

int n;
char *p, c[100005];

int eval();
int termen();
int factor();

int main()
{
    f.get(c,100001);
    p = c;

    g << eval();
}

int eval(){
    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();}
        if (*p == '/'){p++;rez /= factor();}
    }
    return rez;
}
int factor(){
    int rez = 0;
    if (*p == '('){p++;rez = eval();p++;}

    while(*p >= '0' && *p <= '9'){rez = rez * 10 + (int)*p - '0';p++;}

    return rez;
}