Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C++ language, I\'m stuck at a few parts and don\'t know how to approach them cla

ID: 3855781 • Letter: C

Question

   
 C++ language, I'm stuck at a few parts and don't know how to approach them  class Triangle : public triangleInterface<T> {  private :     T side1, side2, side3;  public :      Triangle();      Triangle(T side1, T side2, T side3);      /** Sets or modifies the sides of this triangle. Ensures that the new sides form a triangle. */     void setSides(T newSide1, T newSide2, T newSide3) override ;      /** Gets the three sides of this triangle.      * @return A vector containing the values of the sides. */     std::vector<T> getSides() const override;      /** Computes the area of this triangle. @return This triangle's area. */     T getArea() const override;      /** Computes the perimeter of this triangle. @return This triangle's perimeter. */     T getPerimeter() const override;      /** @return True if this triangle is a right triangle. */     bool isRightTriangle() const override;      /** @return True if this triangle is an equilateral triangle. */     bool isEquilateral() const override;      /** @return True if this triangle is an isosceles triangle. */     bool isIsosceles() const override;  };   template<class T> Triangle<T>::Triangle() {    //TODO }  template <class T> Triangle<T>::Triangle(T side1, T side2, T side3) {    //TODO }  template <class T> void Triangle<T>::setSides(T newSide1, T newSide2, T newSide3) {    //TODO }  /** Gets the three sides of this triangle.  * @return A vector containing the values of the sides. */ template <class T> std::vector<T> Triangle<T>::getSides() const {    //TODO }  /** Computes the area of this triangle. @return This triangle's area. */ template <class T> T Triangle<T>::getArea() const{     //heron's formula triangle area    //TODO }  /** Computes the perimeter of this triangle. @return This triangle's perimeter. */ template <class T> T Triangle<T>::getPerimeter() const {    //TODO }  /** @return True if this triangle is a right triangle. */ template <class T> bool Triangle<T>::isRightTriangle() const {    //TODO }  /** @return True if this triangle is an equilateral triangle. */ template <class T> bool Triangle<T>::isEquilateral() const {    //TODO }  /** @return True if this triangle is an isosceles triangle. */ template <class T> bool Triangle<T>::isIsosceles() const {    //TODO } 

Explanation / Answer

Here is the implementation for you:

#include <iostream>
#include <cmath>
#include <vector>
template <typename T>
class Triangle : public triangleInterface<T> {

private :
T side1, side2, side3;

public :

Triangle();

Triangle(T side1, T side2, T side3);

/** Sets or modifies the sides of this triangle. Ensures that the new sides form a triangle. */
void setSides(T newSide1, T newSide2, T newSide3) override ;

/** Gets the three sides of this triangle.
* @return A vector containing the values of the sides. */
std::vector<T> getSides() const override;

/** Computes the area of this triangle. @return This triangle's area. */
T getArea() const override;

/** Computes the perimeter of this triangle. @return This triangle's perimeter. */
T getPerimeter() const override;

/** @return True if this triangle is a right triangle. */
bool isRightTriangle() const override;

/** @return True if this triangle is an equilateral triangle. */
bool isEquilateral() const override;

/** @return True if this triangle is an isosceles triangle. */
bool isIsosceles() const override;

};

template<class T>
Triangle<T>::Triangle() {
//TODO
side1 = side2= side3 = 1;
}

template <class T>
Triangle<T>::Triangle(T side1, T side2, T side3) {
//TODO
this->side1 = side1;
this->side2 = side2;
this->side3 = side3;
}

template <class T>
void Triangle<T>::setSides(T newSide1, T newSide2, T newSide3) {
//TODO
this->side1 = side1;
this->side2 = side2;
this->side3 = side3;
}

/** Gets the three sides of this triangle.
* @return A vector containing the values of the sides. */
template <class T>
std::vector<T> Triangle<T>::getSides() const {
//TODO
std::vector<T> sides;
sides.push_back(side1);
sides.push_back(side2);
sides.push_back(side3);
return sides;
}

/** Computes the area of this triangle. @return This triangle's area. */
template <class T>
T Triangle<T>::getArea() const{
//heron's formula triangle area
//TODO
T semiperimeter = (side1 + side2 + side3) / 2.0;
return sqrt(semiperimeter * (semiperimeter - side1) * (semiperimeter - side2) * (semiperimeter - side3));

}

/** Computes the perimeter of this triangle. @return This triangle's perimeter. */
template <class T>
T Triangle<T>::getPerimeter() const {
//TODO
return (side1 + side2 + side3);
}

/** @return True if this triangle is a right triangle. */
template <class T>
bool Triangle<T>::isRightTriangle() const {
//TODO
if(side1*side1 == side2*side2 + side3*side3)
        return true;
if(side2*side2 == side1*side1 + side3*side3)      
        return true;
if(side3*side3 == side2*side2 + side1*side1)      
        return true;
return false;      
}

/** @return True if this triangle is an equilateral triangle. */
template <class T>
bool Triangle<T>::isEquilateral() const {
//TODO
if(side1 == side2 && side1 == side3)
        return true;
return false;      
}

/** @return True if this triangle is an isosceles triangle. */
template <class T>
bool Triangle<T>::isIsosceles() const {
//TODO
if(side1 == side2 && side1 != side3)
        return true;
if(side2 == side3 && side2 != side1)
        return true;
if(side3 == side1 && side3 += side2)              
        return true;
return false;      
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote