Pagini recente » Cod sursa (job #1725412) | Cod sursa (job #1800957) | Cod sursa (job #1763554) | Cod sursa (job #2196136) | Cod sursa (job #1238446)
#include <fstream>
using namespace std;
ifstream inFile("file.in");
ofstream outFile("evaluare.out");
int evaluate(char* &);
int termen(char* &);
int factor(char* &);
int evaluate(char* &p)
{
int r = termen(p);
while(*p == '+' || *p == '-'){
if(*p == '+'){
p++;
r += termen(p);
}
if(*p == '-'){
p++;
r -= termen(p);
}
}
return r;
}
int termen(char* &p)
{
int r = factor(p);
while(*p == '*' || *p == '/'){
if(*p == '*'){
p++;
r *= factor(p);
}
if(*p == '/'){
p++;
r /= factor(p);
}
}
return r;
}
int factor(char* &p)
{
int r = 0;
if(*p == '('){
p++;
r = evaluate(p);
p++;
}
if('0' <= *p && *p <= '9'){
while('0' <= *p && *p <= '9'){
r = 10*r + (*p - '0');
p++;
}
}
return r;
}
int main()
{
char expresion[100005];
inFile >> expresion;
char* p = expresion;
outFile << evaluate(p) << "\n";
}