Pagini recente » Cod sursa (job #1622009) | Cod sursa (job #1657177) | Cod sursa (job #103988) | Cod sursa (job #1809161) | Cod sursa (job #1023035)
//#include "stdafx.h"
#include <cstdio>
#include <cstring>
#include<fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
#define LMAX 2
char op[4][4] = { "+-", "*/", "^", "" };
#define NX 100010
char S[NX], *p = S;
int eval( int a, int b, char o ) {
switch( o ) {
case '+': {return a + b;}
case '-': {return a - b;}
case '*': {return a * b;}
case '/': {return a / b;}
}
}
int endOfExp()
{
*p--;
if(*p ==NULL)
return 1;
else
*p++;
return 0;
}
int expr( int lev ) {
int x, y;
if( lev == LMAX )
if( *p == '(')
++p, x = expr(0), ++p;
else
for( x = 0; *p >= '0' && *p <= '9'; ++p )
x = x * 10 + *p - '0';
else
for( x = expr(lev+1); strchr(op[lev], *p); x = y )
{
y = eval( x, expr(lev+1), *p++ );
if(endOfExp()==1)
break;
}
return x;
}
int main() {
f>>p;
p = S;
g<<expr(0);
return 0;
}