Cod sursa(job #2440845)

Utilizator Leonard123Mirt Leonard Leonard123 Data 19 iulie 2019 14:40:55
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
using namespace std;

ifstream cin("evaluare.in");
ofstream cout("evaluare.out");

#define maxn 100010
char s[maxn], *p=s;

int factor();
int numar();

int solve(){
    int r=factor();
    while(*p=='+'||*p=='-')
        switch(*p){
            case '+':
                p++;
                r+=factor();
                break;
            case '-':
                p++;
                r-=factor();
                break;
    }
    return r;
}

int factor(){
    int r=numar();
    while(*p=='*'||*p=='/')
        switch(*p){
            case '*':
                p++;
                r*=numar();
                break;
            case '/':
                p++;
                r/=numar();
                break;
        }
    return r;
}

int numar(){
    int r=0;
     if ( *p == '(' ) {
        ++p;
		r = solve();
		++p;
     }else
        while(*p>='0'&&*p<='9'){
            r=r*10+(*p-'0');
            p++;
        }
    return r;
}

int main()
{
    cin.getline(s,maxn);
    cout<<solve();
}