Pagini recente » Cod sursa (job #2685574) | Cod sursa (job #642029) | Cod sursa (job #2215120) | Cod sursa (job #2339620) | Cod sursa (job #2870098)
#include <iostream>
#include <fstream>
using namespace std;
const string filename = "evaluare";
ifstream fin(filename + ".in");
ofstream fout(filename + ".out");
int ind;
string s;
int prio1();
int prio2();
int prio3();
int getnr();
bool cifra(char c);
int main()
{
fin >> s;
fout << prio3();
return 0;
}
int prio3()
{
//fout << 3;
int nr = prio2();
while(s[ind] == '+' || s[ind] == '-')
{
ind++;
if(s[ind - 1] == '+')
nr += prio2();
if(s[ind - 1] == '-')
nr -= prio2();
}
return nr;
}
int prio2()
{
//fout << 2;
int nr = prio1();
while(s[ind] == '*' || s[ind] == '/')
{
ind++;
if(s[ind - 1] == '*')
nr *= prio1();
if(s[ind - 1] == '/')
nr /= prio1();
}
return nr;
}
int prio1()
{
//fout << 1;
int nr = 0;
if(s[ind] == '(')
{
ind++;
nr = prio3();
ind++;
}
else
nr = getnr();
return nr;
}
bool cifra(char c)
{
return '0' <= c && c <= '9';
}
int getnr()
{
//fout << "G";
int nr = 0;
while(cifra(s[ind]))
{
nr = nr * 10 + (s[ind] - '0');
ind++;
}
return nr;
}