Cod sursa(job #3159828)

Utilizator magicninjaJula Diana magicninja Data 22 octombrie 2023 12:02:13
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <stdio.h>
#include <fstream>
using namespace std;

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

char v[100005];
int n = 0;

int add();

int fact(){
    int nr = 0;

    if (v[n] == '(') {
        n++;
        nr += add();
        n++;
    }
    else {
        while (v[n] >= '0' && v[n] <= '9') {
            nr = nr * 10 + v[n] - '0';
            n++;
        }
    }

    return nr;
}

int multi(){
    int rez = fact();
    while (v[n] == '*' || v[n] == '/')
        if (v[n] == '*'){
            n++;
            rez *= fact();
        }
        else{
            n++;
            rez /= fact();
        }

    return rez;
}

int add() {
    int rez;

    rez = multi();
    while (v[n] == '+' || v[n] == '-')
        if (v[n++] == '+')
            rez += multi();
        else
            rez -= multi();

    return rez;
}

int main()
{

    in >> v;

    n = 0;
    out << add();


    return 0;
}