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;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.