#include class RightTriangle { double height; double base; double hypotenuse; public: RightTriangle(void); RightTriangle(double setBase); RightTriangle(double setBase,double setHeight); RightTriangle(double setBase,double setHeight,double setHypotenuse); void setHeight(double setHeight); double getHeight(void); void setBase(double setBase); double getBase(void); void setHypotenuse(double setHypotenuse); double getHypotenuse(void); bool calculateSides(void); double getArea(void); double getPerimeter(void); }; RightTriangle::RightTriangle() { height = base = hypotenuse = 0; } RightTriangle::RightTriangle(double setBase) { RightTriangle(); RightTriangle::setBase(setBase); } RightTriangle::RightTriangle(double setBase,double setHeight) { RightTriangle(); RightTriangle::setBase(setBase); RightTriangle::setHeight(setHeight); } RightTriangle::RightTriangle(double setBase,double setHeight,double setHypotenuse) { RightTriangle(); RightTriangle::setBase(setBase); RightTriangle::setHeight(setHeight); RightTriangle::setHypotenuse(setHypotenuse); } void RightTriangle::setHeight(double setHeight) { height = setHeight; } double RightTriangle::getHeight() { if(!height) { calculateSides(); } return height; } void RightTriangle::setBase(double setBase) { base = setBase; } double RightTriangle::getBase() { if(!base) { calculateSides(); } return base; } void RightTriangle::setHypotenuse(double setHypotenuse) { hypotenuse = setHypotenuse; } double RightTriangle::getHypotenuse() { if(!hypotenuse) { calculateSides(); } return hypotenuse; } bool RightTriangle::calculateSides() { if(base && height && hypotenuse && (hypotenuse > height) && (hypotenuse > base)) { return true; } if(base && height && !hypotenuse) { setHypotenuse ( sqrt((base * base) + (height * height)) ); if (hypotenuse > base && hypotenuse > height) { return true; } else { return false; } } if(base && hypotenuse && !height) { setHeight ( sqrt((hypotenuse * hypotenuse) - (base * base)) ); if (hypotenuse > base && hypotenuse > height) { return true; } else { return false; } } if (height && hypotenuse && !base) { setBase ( sqrt((hypotenuse * hypotenuse) - (height * height)) ); if(hypotenuse > base && hypotenuse > height) { return true; } else { return false; } } return false; } double RightTriangle::getArea() { if(!base || !height) { calculateSides(); } return 0.5 * base * height; } double RightTriangle::getPerimeter() { if(!base || !height || !hypotenuse) { calculateSides(); } return base + height + hypotenuse; }