Cod sursa(job #2974407)

Utilizator DariusM17Murgoci Darius DariusM17 Data 4 februarie 2023 00:57:56
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in") ;
ofstream fout("evaluare.out") ;
string s ;
int i,eval(),termen(),factor(),numar();
int main()
{
    fin>>s ;
    fout<<eval() ;
    return 0;
}
int eval()
{
    long long cnt=termen() ;
    while(s[i]=='+' || s[i]=='-')
    {
        if(s[i]=='+') i++,cnt+=termen() ;
        else i++,cnt-=termen() ;
    }
    return cnt ;
}
/// (1+1)*13+10/2
int termen()
{
    long long cnt=factor() ;
    while(s[i]=='*' || s[i]=='/')
    {
        if(s[i]=='*') i++,cnt*=factor() ;
        else i++,cnt/=factor() ;
    }
    return cnt ;
}
int factor()
{
    long long cnt ;
    if(s[i]=='(') i++,cnt=eval(),i++  ;
    else cnt=numar() ;
    return cnt ;
}
int numar()
{
    long long nr=0 ;
    while(isdigit(s[i])) nr=nr*10+(s[i]-'0'),i++ ;
    return nr ;
}