Cod sursa(job #2860128)

Utilizator MohneaGosuMihnea Gusu MohneaGosu Data 2 martie 2022 11:00:51
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <cstring>

using namespace std;
ifstream Gigi ("evaluare.in");
ofstream Marcel ("evaluare.out");
int poz;
int expresie ();
int termen ();
int factor ();
int numar ();
char s[100005];
int expresie ()
{
    int rez=termen();
    while(s[poz] && (s[poz]=='+' || s[poz]=='-')){
        poz++;
        if (s[poz-1]=='-') rez-=termen();
        else rez+=termen();
    }
    return rez;

}
int termen ()
{
    int rez=factor();
    while(s[poz] && (s[poz]=='*' || s[poz]=='/')){
        poz++;
        if (s[poz-1]=='/')rez/=factor();
        else rez*=factor();
    }
    return rez;
}
int factor ()
{   int rez =0;
    if (s[poz]=='(') poz++,rez=expresie(),poz++;
    else rez=numar();
    return rez;
}
int numar ()
{
    int rez=0;
    while(s[poz]>='0'&& s[poz]<='9'){
        rez*=10;
        rez+=s[poz]-'0';
        poz++;
    }
    return rez;
}
int main()
{
    Gigi>>s;
    Marcel<<expresie();
    return 0;
}