Cod sursa(job #3272357)

Utilizator c0drinn_Rau Codrin c0drinn_ Data 29 ianuarie 2025 10:38:16
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
 int i=0;
 char s[100001];
 long long expresie();
 long long termen();
 long long factor();

 long long expresie(){
   long long rez = termen();

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



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

 long long factor(){
   // i este la inceput
  long long rez;
  if( s[i]=='('){
    i++;
    rez= expresie();
    i++;
  }
  else{
    // 2345+
    // i.. i
    rez=0;
    while(s[i] >= '0' && s[i] <= '9'){
      rez = rez * 10 + (s[i] - '0');
      i++;
    }


  }
   return rez;
 }

int main()
{
   fin>>s;
   fout<<expresie();

  return 0;
}