Cod sursa(job #2682810)

Utilizator AlinaFloreaFlorea Alina AlinaFlorea Data 9 decembrie 2020 18:20:08
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100005], *p;

//prototipurile functiilor
int factor();
int elem();

int termen(){ ///se ocupa de adunari si scaderi de factori
    int rez=factor();
    while(*p=='+' || *p=='-'){
        if(*p=='+'){
            p++; ///trec la urm adresa
            rez=rez+factor();
        }
        else{
            p++;
            rez=rez-factor();
        }
    }
    return rez;
}
int factor(){ ///calculeaza produsele sau impartirile
    ///avem de exemplu t1*t2/t3
    int rez=elem();
    while(*p=='*' || *p=='/'){
        if(*p=='*'){
            p++; ///urm adresa
            rez=rez*elem();
        }
        else{
            p++; ///urm adresa
            rez=rez/elem();
        }
    }
    return rez;
}
int elem(){
    int rez=0;
    if(*p=='('){ ///incepe o expresie
        p++;
        rez=termen();
        p++;
        return rez;
    }
    while(isdigit(*p)){
        rez=rez*10+*p-'0';
        p++;
    }
    return rez;
}
int main()
{
    f>>s;
    p=s;
    g<<termen();
    return 0;
}