Cod sursa(job #3236700)

Utilizator winemomComan Erin winemom Data 30 iunie 2024 15:50:08
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");

char s[100005];
int i;

int expresie();
int termen();
int factor();
int constanta();

int main()
{
    f >> s;
    g << expresie();
}

int expresie()
{
    int r = termen();
    while(s[i] == '+' || s[i] == '-')
    {
        if(s[i] == '+')
            i++, r+= termen();
        else
            i++, r-=termen();
    }
    return r;
}

int termen()
{
    int r = factor();
    while(s[i] == '*' || s[i] == '/')
    {
        if(s[i] == '*')
            i++, r *=factor();
        else
            i++, r/=factor();
    }
    return r;
}

int factor()
{
    int r;
    if(s[i] == '(')
        i++, r = expresie(), i++;
    else
        r = constanta();
    return r;
}

int constanta()
{
    int r=0;
    while(s[i] >= '0' && s[i]<='9')
        r = r*10 + (s[i] - '0'), i++;
    return r;
}