Cod sursa(job #3272355)

Utilizator BiancaPatrulescuBianca Patrulescu BiancaPatrulescu Data 29 ianuarie 2025 10:36:07
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 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;
}