Pagini recente » Cod sursa (job #2748851) | Cod sursa (job #2457067) | Cod sursa (job #1919376) | Cod sursa (job #2596590) | Cod sursa (job #3239642)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int expresie(const string& s,int& p);
int termen(const string& s,int& p);
int factor(const string& s,int& p);
int numar(const string& s,int& p);
int expresie(const string& s,int& p){
int result=termen(s,p);
while(p<s.size() and (s[p]=='+' or s[p]=='-')){
int sign=1-2*(s[p]=='-');
p++;
result+=sign*termen(s,p);
}
return result;
}
int termen(const string& s,int& p){
int result=factor(s,p);
while(p<(int)s.size() and (s[p]=='*' or s[p]=='/'))
{
p++;
if(s[p-1]=='*'){
result*=factor(s,p);
}else{
result/=factor(s,p);
}
}
return result;
}
int factor(const string& s,int& p){
if(s[p]=='('){
p++;
int result=expresie(s,p);
p++;
return result;
}else{
return numar(s,p);
}
}
int numar(const string& s,int& p){
int result=0;
while('0'<=s[p] and s[p]<='9'){
result=result*10+(s[p]-'0');
p++;
}
return result;
}
int main(){
int p=0;
string s;
fin>>s;
fout<<expresie(s,p);
}