Pagini recente » Cod sursa (job #2094650) | Cod sursa (job #681610) | Cod sursa (job #2005533) | Cod sursa (job #926733) | Cod sursa (job #3334043)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i;
int expresie(string &s);
int termen(string &s);
int factor(string &s);
int numar(string &s);
int expresie(string &s)
{
int ans=termen(s);
while(s[i]=='+' || s[i]=='-')
{
if(s[i]=='+')
{
i++;
ans=ans+termen(s);
}
if(s[i]=='-')
{
i++;
ans=ans+termen(s);
}
}
return ans;
}
int termen(string &s)
{
int ans=factor(s);
while(s[i]=='*' || s[i]=='/')
{
if(s[i]=='*')
{
i++;
ans=ans*factor(s);
}
if(s[i]=='/')
{
i++;
ans=ans/factor(s);
}
}
return ans;
}
int factor(string &s)
{
int ans;
if(s[i]=='(')
{
i++;
ans=expresie(s);
i++;
}
else
ans=numar(s);
return ans;
}
int numar(string &s)
{
int ans=0;
while(s[i]>='0' && s[i]<='9')
{
ans=ans*10+s[i]-'0';
i++;
}
return ans;
}
int main()
{
string s;
fin >> s;
fout << expresie(s);
return 0;
}