Pagini recente » Cod sursa (job #2711531) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #2705571) | Cod sursa (job #2237716) | Cod sursa (job #2368813)
#include <fstream>
#include <string>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int PlusMinus(int &pos);
int MultiplyDivide(int &pos);
int BracketsValues(int &pos);
int PlusMinus(int &pos)
{
int ans = MultiplyDivide(pos);
while(s[pos] == '+' || s[pos] == '-')
{
pos++;
if(s[pos - 1] == '+')
ans += MultiplyDivide(pos);
else
ans -= MultiplyDivide(pos);
}
return ans;
}
int MultiplyDivide(int &pos)
{
int ans = BracketsValues(pos);
while(s[pos] == '*' || s[pos] == '/')
{
pos++;
if(s[pos - 1] == '*')
ans *= BracketsValues(pos);
else
ans /= BracketsValues(pos);
}
return ans;
}
int BracketsValues(int &pos)
{
int ans = 0;
if(s[pos] == '(')
{
pos++;
ans = PlusMinus(pos);
pos++;
}
else
{
while(isdigit(s[pos]))
ans = ans * 10 + (s[pos] - '0'), pos++;
}
return ans;
}
int main()
{
int p = 0;
fin >> s;
fout << PlusMinus(p) << '\n';
return 0;
}