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
#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;
}
}
Comments
Leave a comment