Pagini recente » Cod sursa (job #590392) | Cod sursa (job #1395947) | Cod sursa (job #1085788) | Cod sursa (job #3177489) | Cod sursa (job #2643862)
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#define MH 2
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char s[100010], ch[][4]{"+-", "*/", "^", ""}, *p=s;
int eval(int);
int getNr();
int rez(int, char, int);
int rez(int a, char c, int b)
{
switch(c)
{
case '+':
return a+b;
case '-':
return a-b;
case '*':
return a*b;
case '/':
return a/b;
}
}
int eval(int h)
{
int r;
if(h==MH) r=getNr();
else r=eval(h+1);
while(strchr(ch[h], *p))
r=rez(r, *(++p-1), eval(h+1));
return r;
}
int getNr()
{
int r;
if(*p=='(') ++p, r=eval(0), ++p;
else
{
r=atoi(p);
while(*p>='0' && *p<='9') ++p;
}
return r;
}
int main()
{
in>>s;
s[strlen(s)]='\n';
out<<eval(0);
return 0;
}