Technical test for a job interview.
at main 78 lines 1.2 kB view raw
1#include "numeral_modifier.hpp" 2 3NumeralModifier::~NumeralModifier() 4{ 5 if (_left != nullptr) 6 { 7 delete _left; 8 } 9 10 if (_right != nullptr) 11 { 12 delete _right; 13 } 14} 15 16void NumeralModifier::setChild(NumeralWord *child) 17{ 18 if (_right != nullptr) 19 { 20 _right->setChild(child); 21 } 22 else 23 { 24 _right = child; 25 } 26} 27 28int NumeralModifier::evaluate(NumeralWord *child) 29{ 30 if (child == nullptr) 31 { 32 return 0; 33 } 34 35 return child->evaluate(); 36} 37 38int NumeralModifier::evaluate() 39{ 40 switch (_joiner) 41 { 42 case ADD: 43 return evaluate(_left) + evaluate(_right); 44 //break; 45 46 case SUBSTRACT: 47 return evaluate(_left) - evaluate(_right); 48 //break; 49 50 default: 51 return 0; 52 //break; 53 } 54} 55 56std::string NumeralModifier::to_string() 57{ 58 std::string out = _repr + "("; 59 if (_left != nullptr) 60 { 61 out += _left->to_string(); 62 } 63 else 64 { 65 out += "null"; 66 } 67 out += std::string(","); 68 if (_right != nullptr) 69 { 70 out += _right->to_string(); 71 } 72 else 73 { 74 out += "null"; 75 } 76 out += std::string(")"); 77 return out; 78}