Pagini recente » Cod sursa (job #2351353) | Cod sursa (job #2683740) | Cod sursa (job #3288891) | Cod sursa (job #3288946) | Cod sursa (job #2482431)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
bool isDigit(char c);
int termen(char *(&p));
int eval(char *(&p));
bool isDigit(char c)
{
return (c>='0' && c<='9');
}
int termen(char *(&p))
{
int x=0;
if(*p=='(')
{
x=eval(++p);
if(*p=='*')
return x*termen(++p);
if(*p=='/')
return x/termen(++p);
}
while(isDigit(*p))
x=x*10+(*p-'0'),++p;
if(*p=='*')
return x*termen(++p);
if(*p=='/')
return x/termen(++p);
return x;
}
int eval(char *(&p))
{
int res=termen(p);
while(*p!='\00' && *p!=')')
{
if(*p=='+')
{
++p;
int x=termen(p);
res+=x;
}
else
{
++p;
int x=termen(p);
res-=x;
}
}
++p;
return res;
}
int main()
{
char s[100000];
f>>s;
char *p=s;
g<<eval(p);
return 0;
}