Cod sursa(job #2875230)

Utilizator anamaria1129Ana-Maria Panait anamaria1129 Data 21 martie 2022 12:12:05
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>

using namespace std;

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


long long termen(char[1000005], int&);
long long factor(char[1000005], int&);


long long eval(char s[100005], int &i){
	long long u = termen(s, i);
	while (s[i] == '+' || s[i] == '-') {
        if(s[i] == '+'){
            i++;
            u += termen(s, i);
        } else{
            i++;
            u -= termen(s, i);
        }
	}
	return u;
}

long long termen(char s[100005], int &i){
	long long t = factor(s, i);
	while (s[i] == '*' || s[i] =='/' ) {
        if (s[i] == '*'){
            i++;
            t *= factor(s, i);
        } else{
            i++;
            t /= factor(s, i);
        }
	}
	return t;
}

long long factor(char s[100005], int &i) {
    long long f = 0;
    if (s[i] == '(') {
        i++;
		f = eval(s, i);
		i++;
    } else {
        while (s[i] >='0' && s[i] <='9'){
            f = f * 10 + s[i] - '0';
			i++;
		}
    }
    return f;
}

int main() {
    char s[100005];
    in.getline(s, 100005);
    int i = 0;
    out << eval(s, i);
    return 0;
}