Pagini recente » Cod sursa (job #432908) | Cod sursa (job #2439003) | Cod sursa (job #2551087) | Cod sursa (job #272103) | Cod sursa (job #2241906)
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int nmax = 100001;
char expr[nmax], *p=expr;
int expresie() ,term(), fact();
int main()
{
fin >> expr;
fout << expresie();
return 0;
}
int expresie()
{
int rez = term();
while(*p == '+' || *p == '-')
{
char s = *p;
++p;
int val = term();
if(s == '+')
rez = rez+val;
else rez = rez-val;
}
return rez;
}
int term()
{
int rez = fact();
while(*p == '*' || *p == '/')
{
char s = *p;
p++;
int val = fact();
if(s == '*')
rez = rez*val;
else rez = rez/val;
}
return rez;
}
int fact()
{
if('0' <= *p and *p <= '9')
{
int rez =0;
while('0' <= *p and *p <='9')
{
rez =rez * 10 + *p-'0';
++p;
}
return rez;
}
else
{
++p;
int rez = expresie();
++p;
return rez;
}
}