C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の平面内の平行四辺形の数


平行四辺形を形成する点を含む平面が与えられます。タスクは、与えられた点を使用して形成できる平行四辺形の数を計算することです。平行四辺形では、四辺形の反対側は平行であるため、反対の角度は等しくなります。

入力

int a[] = {0, 2, 5, 5, 2, 5, 2, 5, 2}
Int b[] = {0, 0, 1, 4, 3, 8, 7, 11, 10}

C++の平面内の平行四辺形の数

出力 −平面内の平行四辺形の数− 3

説明 −(x、y)点が与えられ、これらの点を使用して、図に示すように3つの平行四辺形のカウントを形成できます。

入力

a[] = {0, 3, 1, 4, 1, 5}
b[] = {0, 1, 3, 4, 4, 4}

出力 −平面内の平行四辺形の数− 1

説明 −(x、y)点が与えられ、これらの点を使用して、図に示すように1つの平行四辺形のカウントを形成できます。

以下のプログラムで使用されているアプローチは次のとおりです

  • x座標値にarray_1を入力し、y座標値にarray_2を入力します

  • array_1のサイズを計算し、さらに処理するためにデータを関数に渡します

  • ペアを形成し、整数型データを格納するタイプマップの変数を作成します

  • 形成できる平行四辺形の合計を格納するための一時変数カウントを作成します

  • 0からarray_1のサイズまでループFORiを開始します

  • i+1からarray_1のサイズまでの別のループFORjを開始します

  • ループ内で、a_midをa [i] + a [j]に設定し、b_midをb [i] + b [j]

    に設定します。
  • そして、array_1とarray_2の中間値を1ずつインクリメントします

  • マップを最初から最後までトラバースする別のループを開始します

  • ループ内で、ペアのy値を使用して一時変数を設定します

  • そして、temp *(temp -1)/ 2

    でカウントを設定します
  • 返品数

  • 結果を印刷します。

#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;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of parallelograms in a plane: 1

  1. C++でソートされたバイナリ配列の1を数えます

    このチュートリアルでは、ソートされたバイナリ配列で1を見つけるプログラムについて説明します。 このために、1と0のみを含む配列が提供されます。私たちのタスクは、配列に存在する1の数を数えることです。 例 #include <bits/stdc++.h> using namespace std; //returning the count of 1 int countOnes(bool arr[], int low, int high){    if (high >= low){       int mid = low + (

  2. 配列内の反転をカウントするC++プログラム

    カウント反転とは、配列をソートするために必要なスイッチの数を意味します。配列がソートされている場合、反転カウント=0。反転カウント=配列が逆の順序でソートされた場合の最大値。 配列内の反転をカウントするC++プログラムを開発しましょう。 アルゴリズム Begin    Function CountInversionArray has arguments a[], n = number of elements.    initialize counter c := 0    for i in range 0 to n-1, do &n