Cod sursa(job #3192673)

Utilizator cris_s2Cristina Arion cris_s2 Data 13 ianuarie 2024 09:48:31
Problema Evaluarea unei expresii Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <cstring>
#include <ctype.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char s[10004];
int poz;
int add();
int mult();
int fact();

int add(){
int res=mult();
while(s[poz]=='+' || s[poz]=='-'){
    if(s[poz]=='+'){
        poz++;
        res+=mult();
    }
    else {
        poz++;
        res-=mult();
    }

}
return res;
}
int mult(){
int res=fact();
while(s[poz]=='*' || s[poz]=='/'){
    if(s[poz]=='*'){
        poz++;
        res*=fact();
    }
    else {
        poz++;
        res/=fact();
    }

}
return res;
}
int fact(){
    int res=0;
    if(s[poz]=='('){
        poz++;
        res=add();
        poz++;
}
    else {
            while(isdigit(s[poz])){
                res=res*10+(s[poz]-'0');
                poz++;
            }

    }
    return res;
}
int main()
{
    in>>s;
    out<<add();
    return 0;
}