Cod sursa(job #2978535)

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