Cod sursa(job #1471673)

Utilizator bogdanmarin69Bogdan Marin bogdanmarin69 Data 14 august 2015 21:23:56
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>

using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int MAX = 100001;
char s[MAX], *p = s;
int eval();
int termen();
int factor();
int main()
{
    fin>>s;
    fout<<eval();
    return 0;
}
int eval(){
    int ans = termen();
    while(*p=='+' or *p=='-'){
        if(*p=='+'){
            p++;
            ans = ans + termen();
        }
        else{
            p++;
            ans = ans - termen();
        }
    }
    return ans;
}
int termen(){
    int ans = factor();
    while(*p=='*' or *p=='/'){
        if(*p=='*'){
            p++;
            ans = ans * factor();
        }
        else{
            p++;
            ans = ans / factor();
        }
    }
    return ans;
}
int factor(){
    int ans = 0;
    if(*p=='('){
        p++; //'('
        ans = eval();
        p++; //')'
    }
    else
        while('0'<=*p and *p<='9'){
            ans = ans*10 + *p - '0';
            p++;
        }
    return ans;
}