Cod sursa(job #1892304)

Utilizator robertkarolRobert Szarvas robertkarol Data 24 februarie 2017 21:13:45
Problema Evaluarea unei expresii Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <bits/stdc++.h>
#define lmax 100001
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char sir[lmax];
int expresie(char* &sir);
int termen(char* &sir);
int factor(char* &sir);
int numar(char* &sir);
int expresie(char* &sir)
{
    int raspuns=termen(sir);
    while(sir[0]=='+')
    {
        sir++;
        raspuns+=expresie(sir);
    }
    while(sir[0]=='-')
    {
        sir++;
        raspuns-=expresie(sir);
    }
    return raspuns;
}
int termen(char* &sir)
{
    int raspuns=factor(sir);
    while(sir[0]=='*')
    {
        sir++;
        raspuns*=factor(sir);
    }
    while(sir[0]=='/')
    {
        sir++;
        raspuns/=factor(sir);
    }
    return raspuns;
}
int factor(char* &sir)
{
    int raspuns=0;
    if(sir[0]=='(')
    {
        sir++; // '('
        raspuns=expresie(sir);
        sir++; // ')'
    }
    else if(sir[0]>='0'&&sir[0]<='9') raspuns=numar(sir);
    return raspuns;
}
int numar(char* &sir)
{
    int raspuns=0;
    while(sir[0]>='0'&&sir[0]<='9')
    {
        raspuns=raspuns*10+(sir[0]-'0');
        sir++;
    }
    return raspuns;
}
int main()
{
    fin>>sir;
    char* s=sir;
    fout<<expresie(s);
    return 0;
}