Computer >> Máy Tính >  >> Lập trình >> C ++

Hình dạng tương đương trong C ++

Trong bài toán này, chúng ta được cung cấp các tọa độ của một đa giác. Nhiệm vụ của chúng ta là tạo một chương trình để kiểm tra xem đa giác đã cho có bằng nhau hay không.

Hình dạng bằng nhau là hình có chu vi bằng diện tích của hình đó.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào: đa giác [] [] ={{0, 0}, {5, 7}, {2, 0}}

Đầu ra: Không công bằng

Giải thích:

Chu vi =18,21
Diện tích =7

Phương pháp tiếp cận giải pháp:

Giải pháp cho vấn đề nằm ở chỗ tìm diện tích và chu vi của hình dạng và sau đó so sánh cả hai để kiểm tra thời tiết xem hình dạng đã cho có phải là hình dạng bằng nhau hay không.

Tìm một chu vi bằng cách sử dụng các tọa độ là đơn giản. Chúng ta chỉ cần tìm chiều dài bằng cách sử dụng tọa độ và tìm chu vi,

Chu vi =side1 + side2 + side3

Để tìm khu vực bằng cách sử dụng tọa độ được thực hiện bằng cách sử dụng công thức,

Diện tích =1/2 {(x_1 y_2 + x_2 y_3 + .... x_ (n-1) y_n + x_n y_1) - (x_2 y_1 + x_3 y_2 + .... + x_n y_ (n-1) + x_1 n )}

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#include <bits/stdc++.h>
using namespace std;

double findShapeArea(double cord[][2], int n)
{
   double area = 0.0;
   int j = n - 1;
   for (int i = 0; i < n; i++) {
      area += (float)(cord[j][0] + cord[i][0]) * (cord[j][1] - cord[i][1]);
      j = i;
   }

   return abs(area / 2.0);
}

double findShapeperimeter(double cord[][2], int n) {
   
   double perimeter = 0.0;
   int j = n - 1;
   for (int i = 0; i < n; i++) {
      perimeter += sqrt((cord[j][0] - cord[i][0]) * (cord[j][0] - cord[i][0]) + (cord[j][1] - cord[i][1]) * (cord[j][1] - cord[i][1]));
      j = i;
   }
   return perimeter;
}

int isEquableShape(double cord[][2], int n)
{
   int area = findShapeArea(cord, n);
   int peri = findShapeperimeter(cord, n);
   cout<<"The area of the given shape is "<<area<<endl;
   cout<<"The perimeter of the given shape is "<<peri<<endl;
   if (area == peri)
      return 1;
   else
      return 0;
}

int main() {
   
   int n = 3;
   double cord[n][2] = {{0, 0} , {5, 7}, {2, 0}};
   if (isEquableShape(cord, n))
      cout<<"The given shape is an equable shape";
   else
      cout<<"The given shape is not an equable shape";
   return 0;
}

Đầu ra -

The area of the given shape is 7
The perimeter of the given shape is 18
The given shape is not an equable shape