- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count of parallelograms in a plane in C++
We are given a plane containing points forming the parallelogram and the task is to calculate the count of parallelograms that can be formed using the given points. In parallelograms opposite sides of a quadrilateral are parallel and therefore opposite angles are equal.
Input −
int a[] = {0, 2, 5, 5, 2, 5, 2, 5, 2} Int b[] = {0, 0, 1, 4, 3, 8, 7, 11, 10}
Output − Count of parallelograms in a plane − 3
Explanation − we are given with the (x, y) points and using these points we can form a count of 3 parallelograms as shown in the figure.
Input −
a[] = {0, 3, 1, 4, 1, 5} b[] = {0, 1, 3, 4, 4, 4}
Output − Count of parallelograms in a plane − 1
Explanation − we are given with the (x, y) points and using these points we can form a count of 1 parallelogram as shown in the figure.
Approach used in the below program is as follows
Input array_1 for the x-coordinate values and array_2 for the y-coordinate values
Calculate the size of array_1 and pass the data to the function for further processing
Create a variable of type map that will form pair and store the integer type data
Create a temporary variable count to store the total of parallelograms that can be formed
Start loop FOR i from 0 till the size of an array_1
Start another loop FOR j from i+1 till the size of an array_1
Inside the loops, set a_mid with a[i] + a[j] and set b_mid with b[i] + b[j]
And increment the mid values of array_1 and array_2 by 1
Start another loop that will traverse the map from beginning till the end
Inside the loop, set a temporary variable with the y value of the pair
And set count with temp * (temp -1 ) / 2
Return count
Print the result.
Example
#include <bits/stdc++.h> using namespace std; //Count of parallelograms in a plane int parallelogram(int a[], int b[], int size){ map<pair<int, int>, int> um; int count = 0; for (int i=0; i<size; i++){ for (int j=i+1; j<size; j++){ int a_mid = a[i] + a[j]; int b_mid = b[i] + b[j]; um[make_pair(a_mid, b_mid)]++; } } for (auto it = um.begin(); it != um.end(); it++){ int temp = it->second; count+= temp*(temp - 1)/2; } return count; } int main(){ int a[] = {0, 3, 1, 4, 1, 5}; int b[] = {0, 1, 3, 4, 4, 4}; int size = sizeof(a) / sizeof(int); cout<<"Count of parallelograms in a plane: "<<parallelogram(a, b, size) << endl; return 0; }
Output
If we run the above code it will generate the following output −
Count of parallelograms in a plane: 1