Equable Shapes

A shape is equable if its area is equal to its perimeter. Given ordered coordinates of polygon find whether the shape is equable or not.

Examples :

Input : X[] = {0, 5, 0}
Y[] = {0, 0, 12}
Output : Equable Shape

Input : X[] = {0, 4, 4, 0}
Y[] = {0, 0, 4, 4}
Output : Equable Shape

Input: X[] = {0, 6, 6, 0}
Y[] = {0, 0, 4, 4}
Output: Not Equable Shape

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

We can find area of polygon using shoelace formula which is described in Area of a polygon with given n ordered vertices. We can also find its perimeter simply by adding distances between adjacent points.

C++

 // C++ program to find equable shape #include using namespace std;    // To calculate area of polygon double polygonArea(double X[], double Y[], int n) {     double area = 0.0;        // Calculate value of area using shoelace      // formula     int j = n - 1;     for (int i = 0; i < n; i++) {         area += (X[j] + X[i]) * (Y[j] - Y[i]);         j = i; // j is previous vertex to i     }        return abs(area / 2.0); }    // To calculate perimeter of polygon double polygonPerimeter(double X[], double Y[],                                           int n) {     double perimeter = 0.0;        // Calculate value of perimeter     int j = n - 1;     for (int i = 0; i < n; i++) {         perimeter += sqrt((X[j] - X[i]) * (X[j] - X[i]) +                            (Y[j] - Y[i]) * (Y[j] - Y[i]));         j = i; // j is previous vertex to i     }        return perimeter; }    // To find equable shape void equableShape(double X[], double Y[], int n) {     // Find area and perimeter of polygon if     // they are equal then it is equable shape     if (polygonPerimeter(X, Y, n) == polygonArea(X, Y, n))         cout << "Equable Shape";     else         cout << "Not Equable Shape"; }    // Driver program to test above function int main() {     double X[] = { 0, 5, 0 };     double Y[] = { 0, 0, 12 };        int n = sizeof(X) / sizeof(X);        equableShape(X, Y, n);        return 0; }

Java

 // Java program to find equable shape class equable {        // To calculate area of polygon     static double polygonArea(double X[], double Y[], int n)     {         double area = 0.0;            // Calculate value of area using shoelace formula         int j = n - 1;         for (int i = 0; i < n; i++) {             area += (X[j] + X[i]) * (Y[j] - Y[i]);             j = i; // j is previous vertex to i         }            return Math.abs(area / 2.0);     }        // To calculate perimeter of polygon     static double polygonPerimeter(double X[], double Y[], int n)     {         double perimeter = 0.0;            // Calculate value of perimeter         int j = n - 1;         for (int i = 0; i < n; i++) {             perimeter += Math.sqrt((X[j] - X[i]) * (X[j] - X[i]) +                                   (Y[j] - Y[i]) * (Y[j] - Y[i]));             j = i; // j is previous vertex to i         }            return perimeter;     }        // To find equable shape     static void equableShape(double X[], double Y[], int n)     {         // Find area and perimeter of polygon if         // they are equal then it is equable shape         if (polygonPerimeter(X, Y, n) == polygonArea(X, Y, n))             System.out.println("Equable Shape");         else             System.out.println("Not Equable Shape");     }        // Driver program to test above function     public static void main(String[] args)     {         double X[] = { 0, 5, 0 };         double Y[] = { 0, 0, 12 };            int n = X.length;            equableShape(X, Y, n);     } }

Python 3

 # Python 3 program to find equable shape # To calculate area of polygon    import math def polygonArea(X, Y, n):     area = 0.0         # Calculate value of area     # using shoelace  formula     j = n - 1     for i in range(n):         area += (X[j] + X[i]) * (Y[j] - Y[i])            # j is previous vertex to i         j = i       return abs(area / 2.0)     # To calculate perimeter of polygon def polygonPerimeter(X, Y, n):     perimeter = 0.0         # Calculate value of perimeter     j = n - 1     for i in range(n):         perimeter += math.sqrt((X[j] - X[i]) * (X[j] - X[i]) +                            (Y[j] - Y[i]) * (Y[j] - Y[i]))            # j is previous vertex to i         j = i          return perimeter     # To find equable shape def equableShape(X, Y, n):     # Find area and perimeter of polygon if     # they are equal then it is equable shape     if (polygonPerimeter(X, Y, n) == polygonArea(X, Y, n)):         print("Equable Shape")     else:         print("Not Equable Shape")    #  Driver program to test above function X = [ 0, 5, 0 ] Y = [ 0, 0, 12 ] n = len(X) equableShape(X, Y, n)    # This code is contributed by Azkia Anam.

/div>

C#

 // C# program to find equable shape using System;    class equable {        // To calculate area of polygon     static double polygonArea(double []X,                                double []Y,                                int n)     {         double area = 0.0;            // Calculate value of area using         // Shoelace Formula         int j = n - 1;         for (int i = 0; i < n; i++)         {             area += (X[j] + X[i]) * (Y[j] - Y[i]);             j = i; // j is previous vertex to i         }            return Math.Abs(area / 2.0);     }        // To calculate perimeter of polygon     static double polygonPerimeter(double []X,                                     double []Y,                                     int n)     {         double perimeter = 0.0;            // Calculate value of perimeter         int j = n - 1;         for (int i = 0; i < n; i++) {             perimeter += Math.Sqrt((X[j] - X[i]) *                                    (X[j] - X[i]) +                                     (Y[j] - Y[i]) *                                     (Y[j] - Y[i]));             j = i; // j is previous vertex to i         }            return perimeter;     }        // To find equable shape     static void equableShape(double []X,                               double []Y,                               int n)     {         // Find area and perimeter of          // polygon if they are equal          // then it is equable shape         if (polygonPerimeter(X, Y, n) ==              polygonArea(X, Y, n))             Console.WriteLine("Equable Shape");         else             Console.WriteLine("Not Equable Shape");     }        // Driver Code     public static void Main(String []args)     {         double []X = {0, 5, 0};         double []Y = {0, 0, 12};            int n = X.Length;                    // Calling Function         equableShape(X, Y, n);     } }    // This Code is contributed by vt_m.



Output :

Equable Shape

tags:

Geometric Geometric