Pagini recente » Cod sursa (job #2150123) | Cod sursa (job #2559773) | Cod sursa (job #2692075) | Cod sursa (job #2743801) | Cod sursa (job #565700)
Cod sursa(job #565700)
#include<fstream>
#define dmax 100010
using namespace std;
char s[dmax];
int poz;
int grad1();
int grad2();
int valoare();
void citire()
{
ifstream fin("evaluare.in");
fin.get(s,dmax);
fin.close();
}
int grad1()
{
int rez;
rez = grad2();
while (s[poz] == '+' || s[poz] == '-')
{
poz++;
if (s[poz - 1] == '+')
rez += grad2(); else
rez -= grad2();
}
return rez;
}
int grad2()
{
int rez;
rez = valoare();
while (s[poz] == '*' || s[poz] == '/')
{
poz++;
if (s[poz - 1] == '*')
rez *= valoare(); else
rez /= valoare();
}
return rez;
}
int valoare()
{
int rez=0;
if (s[poz] >= '0' && s[poz] <= '9')
while (s[poz] >= '0' && s[poz] <= '9')
{
rez = rez * 10 + (s[poz] - '0');
poz++;
} else
{
poz++; /*sar peste '(' */
rez = grad1();
poz++; /*sar peste ')' */
}
return rez;
}
void afisare()
{
ofstream fout("evaluare.out");
fout<<grad1();
fout.close();
}
int main()
{
citire();
afisare();
return 0;
}