Answer to Question #294564 in C++ for Shan

Question #294564

Write a function which takes as parameter 3 points and tell whether these



points are the coordinates of isosceles or equilateral or right angled or scalene



triangle. NOTE “Make separate functions as isEquilateral, isRightAngled and



so on... ”.



Sample Input: P1 0 0



P2 1 0



P3 1 1



Sample Output: Right Angle Triangle

1
Expert's answer
2022-02-06T14:48:46-0500
#include <iostream>
#include <cmath>
using namespace std;


const double EPS=1e-12;
struct Point {
    double x;
    double y;
};


double distance(Point p1, Point p2) {
    return sqrt((p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y));
}


bool isEqual(double x, double y) {
    return abs(x-y) < EPS;
}


bool isIsosceles(Point p1, Point p2, Point p3) {
    double s1 = distance(p1, p2);
    double s2 = distance(p1, p3);
    double s3 = distance(p2, p3);


    if ( isEqual(s1, s2) && !isEqual(s1, s3))
        return true;
    if ( isEqual(s2, s3) && !isEqual(s2, s1))
        return true;
    if ( isEqual(s3, s1) && !isEqual(s3, s2))
        return true;
    return false; 
}


bool isEquilateral(Point p1, Point p2, Point p3) {
    double s1 = distance(p1, p2);
    double s2 = distance(p1, p3);
    double s3 = distance(p2, p3);


    if (isEqual(s1, s2) && isEqual(s2, s3))
        return true;
    return false;
}


bool isRightAngled(Point p1, Point p2, Point p3) {
    double s1 = distance(p1, p2);
    double s2 = distance(p1, p3);
    double s3 = distance(p2, p3);


    if (isEqual(s1*s1 + s2*s2, s3*s3) ||
        isEqual(s2*s2 + s3*s3, s1*s1) ||
        isEqual(s3*s3 + s1*s1, s2*s2) )
        return true;
    return false;
}


int main() {
    Point p1, p2, p3;


    cout << "P1 ";
    cin >> p1.x >> p1.y;
    cout << "P2 ";
    cin >> p2.x >> p2.y;
    cout << "P3 ";
    cin >> p3.x >> p3.y;
    cout << endl;


    if (isIsosceles(p1, p2, p3)) {
        cout << "Isosceles Triangle" << endl;
    }
    if (isEquilateral(p1, p2, p3)) {
        cout << "Equilateral Triangle" << endl;
    }
    if (isRightAngled(p1, p2, p3)) {
        cout << "Right Angle Triangle" << endl;
    }
}

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
New on Blog