Mai intai trebuie sa te autentifici.
Cod sursa(job #3341401)
| Utilizator | Data | 19 februarie 2026 13:47:02 | |
|---|---|---|---|
| Problema | Evaluarea unei expresii | Scor | 40 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.08 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int evaluare();
int termen();
int element();
int number();
int i=0;
int main()
{
fin>>s;
i=0;
fout<<evaluare();
return 0;
}
int evaluare()
{
int a=termen();
while(s[i]=='+'||s[i]=='-'&&i<s.size())
{
if(s[i]=='+'){i++;a+=termen();}
else {i++;a-=termen();}
}
return a;
}
int termen()
{
int a=element();
while(s[i]=='*'||s[i]=='/'&&i<s.size())
{
if(s[i]=='*')
{
i++;
a*=element();
}
else
{
i++;
a/=element();
}
}
return a;
}
int element()
{
int res;
if(s[i]=='(')
{
i++;
res=evaluare();
i++;
}
else if(s[i]>='0'&&s[i]<'9')
{
res=number();
}
return res;
}
int number()
{
int res=0;
while(isdigit(s[i]))
{
res=res*10+(s[i]-'0');
i++;
}
return res;
}
