Pagini recente » Cod sursa (job #572356) | Cod sursa (job #2603276) | Cod sursa (job #1711583) | Cod sursa (job #2988748) | Cod sursa (job #3334051)
#include <fstream>
#include <string>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i=0;
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')
{
int cifra=s[i]-'0';
ans=ans*10+cifra;
i++;
}
return ans;
}
int main()
{
string s;
fin >> s;
fout << expresie(s);
return 0;
}