1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
#include "pave.h"
class node
{
protected:
interval value;
public:
node()
{
}
virtual interval eval(const pave& parameters,const REEL& variable) {}
//virtual void contract(pave& parameters, const REEL& variable ) const =0;
};
class nodeBinaryOp : public node
{
protected:
char op;
node * nR;
node * nL;
public:
nodeBinaryOp(char _op, node * _nL, node * _nR)
{
op=_op;
nL=_nL;
nR=_nR;
}
interval eval(const pave& parameters,const REEL& variable)
{
switch(op)
{
case '+' : value = nL->eval(parameters, variable) + nR->eval(parameters, variable); break;
case '*' : value = nL->eval(parameters, variable) * nR->eval(parameters, variable);break;
case '-' : value = nL->eval(parameters, variable) - nR->eval(parameters, variable);break;
case '/' : value = nL->eval(parameters, variable) / nR->eval(parameters, variable);break;
}
return value;
}
};
class nodeConstant : public node
{
public:
nodeConstant(interval _val)
{
value=_val;
}
interval eval(const pave& parameters,const REEL& variable)
{
return value;
}
}; |
Partager