Cod sursa(job #1510780)

Utilizator dyanagGrigore Diana dyanag Data 25 octombrie 2015 16:43:57
Problema Evaluarea unei expresii Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
using namespace std;

FILE *f=fopen("evaluare.in", "r");
FILE *g=fopen("evaluare.out", "w");

char s[101];
int poz;

int f3();
int f2();

int f1(){
    int r=f2();
    while(s[poz]=='+'||s[poz]=='-'){
        ++poz;
        if(s[poz-1]=='+') r+=f2();
        else r-=f2();
    }
    return r;
}

int f2(){
    int r=f3();
    while(s[poz]=='*'||s[poz]=='/'){
        ++poz;
        if(s[poz-1]=='*') r*=f3();
        else r/=f3();
    }
    return r;
}

int f3(){
    if(s[poz]=='('){
        ++poz;
        int val=f1();
        ++poz;
        return val;
    }
    int val=0;
    while('0'<=s[poz]&&s[poz]<='9'){
        val=val*10+s[poz]-'0';
        ++poz;
    }
    return val;
}

int main()
{
    fscanf(f, "%s", s);
    fprintf(g, "%d", f1());
return 0;
}