Cod sursa(job #3333924)

Utilizator CiprianCipanCipi Ciprian CiprianCipan Data 15 ianuarie 2026 16:32:08
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int i = 0;
char a[100001];

int factor();
int termen();
int expresie();
int numar();

int expresie(){
int ans = termen();
if(a[i] == '+'){
    i++;
    return(ans + termen());
}
    if(a[i] == '-'){
    i++;
    return(ans - termen());
    }
return(ans);
}

int termen(){
int ans = factor();
if(a[i] == '*'){
    i++;
    return(ans * factor());
}
if(a[i] == '/'){
    i++;
    return(ans / factor());
}
return ans;
}

int factor(){
    int ans;
if(a[i] == '('){
   i++;
    ans = expresie();
    i++;
   }else{
    ans = numar();
   }
   return ans;
}

int numar(){
int ans =0;
while(a[i] >= '0' && a[i] <= '9'){
    ans = ans * 10 + a[i] - '0';
    i++;
}
return ans;
}
int main(){
fin >> a;
int s = expresie();
fout << s;
}