Answer to Question #294568 in C++ for Shan

Question #294568

10.Write a function which takes as input 4 points and tell whether these points


are the coordinates of Square, Rhombus, Rectangle, Parallelogram or


Quadrilateral. NOTE: Make separate functions for each case checking whether


its square / rhombus / rectangle / parallelogram. i-e (isSquare, isRhombus,


isRectangle, isParallelogram)


Sample Input:


P1 0 0


P2 1 0


P3 1 1


P4 0 1


Output: It’s a square


1
Expert's answer
2022-02-06T17:17:29-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 isSquare(Point p1, Point p2, Point p3, Point p4) {
    double s1 = distance(p1, p2);
    double s2 = distance(p2, p3);
    double s3 = distance(p3, p4);
    double s4 = distance(p4, p1);
    double d1 = distance(p1, p3);
    double d2 = distance(p2, p4);


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


bool isRhombus(Point p1, Point p2, Point p3, Point p4) {
    double s1 = distance(p1, p2);
    double s2 = distance(p2, p3);
    double s3 = distance(p3, p4);
    double s4 = distance(p4, p1);
    double d1 = distance(p1, p3);
    double d2 = distance(p2, p4);


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



bool isRectangle(Point p1, Point p2, Point p3, Point p4) {
    double s1 = distance(p1, p2);
    double s2 = distance(p2, p3);
    double s3 = distance(p3, p4);
    double s4 = distance(p4, p1);
    double d1 = distance(p1, p3);
    double d2 = distance(p2, p4);


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


bool isParallelogram(Point p1, Point p2, Point p3, Point p4) {
    double s1 = distance(p1, p2);
    double s2 = distance(p2, p3);
    double s3 = distance(p3, p4);
    double s4 = distance(p4, p1);
    double d1 = distance(p1, p3);
    double d2 = distance(p2, p4);


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


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

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

    if (isSquare(p1, p2, p3, p4)) {
        cout << "It's a square" << endl;
    }
    else if (isRhombus(p1, p2, p3, p4)) {
        cout << "It's a rhombus" << endl;
    }
    else if (isParallelogram(p1, p2, p3, p4)) {
        cout << "It's a parallelogram" << endl;
    }
    else  {
        cout << "It's common quadrilateral" << 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