Cod sursa(job #1977596)

Utilizator Alex.PAlexandru Pacurar Alex.P Data 5 mai 2017 16:28:42
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <stdio.h>
#include <stdlib.h>

using namespace std;

FILE *fin, *fout;
char c;

int exp();
int factor();
int termen();

int exp(){
    int val=termen();
    while(c=='+' || c=='-'){
        if(c=='+'){
            c=fgetc(fin);
            val+=termen();
        }
        else if(c=='-'){
            c=fgetc(fin);
            val-=termen();
        }
    }
    return val;
}

int termen(){
    int val=factor();
    while(c=='*' || c=='/'){
        if(c=='*'){
            c=fgetc(fin);
            val*=factor();
        }
        else if(c=='/'){
            c=fgetc(fin);
            val/=factor();
        }
    }
    return val;
}

int factor(){
    int val=0;
    if(c=='('){
        c=fgetc(fin);
        val=exp();
        c=fgetc(fin);
    }else{
        while(c>='0' && c<='9'){
            val=val*10+c-'0';
            c=fgetc(fin);
        }
    }
    return val;
}

int main()
{
    fin=fopen("evaluare.in","r");
    fout=fopen("evaluare.out","w");
    c=fgetc(fin);
    fprintf(fout,"%d",exp());
    fclose(fin);
    fclose(fout);
    return 0;
}