Cod sursa(job #3002714)

Utilizator Vincent47David Malutan Vincent47 Data 15 martie 2023 00:25:28
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <cstring>
using namespace std;

ifstream cin("evaluare.in");
ofstream cout("evaluare.out");

string s;
int i;
long expresie();
long termen();
long factor();

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

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

long factor()
{
    long r = 0;
    if (s[i] == '(')
    {
        i ++;
        r += expresie();
        i ++;
    }
    else {
    while (s[i] >= '0' && s[i] <= '9')
    {
       r = r * 10 + (s[i] - '0');
       i ++;
    }
    }
    return r;
}

int main()
{
   cin >> s;
   i = 0;
   cout << expresie();
   return 0;
}