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

2本の平行線だけにすべての座標点が含まれているかどうかを調べるC++プログラム


この記事では、2本の平行線だけが指定されたすべての座標点を保持できるかどうかを調べるプログラムについて説明します。

このために、座標が(i、arr [i])になるような配列が与えられます。配列が与えられたとしましょう

arr = {2,6,8,12,14}

次に、これらの点を2本の平行線上に置くことができます。最初の線には(1,2)、(3,8)が含まれます。 および(5,14) 。残りの座標を持つ2番目の線、つまり(2,6)と(4,12)。

この問題は、与えられた線によって作られた線の傾きを比較することで解決できます。ご存知のように、(a1、b1)と(a2、b2)で作られる直線の傾きは(b2-b1)/(a2-a1)です。

同様に、与えられた配列から3つのポイントを取得し、それらの勾配を比較できます。 3つのポイントのうち、2つのラインしかないため、2つは同じライン上にある必要があります。

これを行うために、3つのポイントを取り、それらを通る切片線を計算します。切片の正確に2つの異なる値を取得した場合、配列内のポイントは2本の平行線で表すことができます。そうでない場合はそうではありません。

プログラムは、条件が可能な場合は1を返し、それ以外の場合は0を返します。

#include <bits/stdc++.h>
using namespace std;
//to calculate if we get exactly two values of intercept
bool is_intercept(double slope, int arr[], int num) {
   set<double> Lines;
   for (int i = 0; i < num; i++)
      Lines.insert(arr[i] - slope * (i));
   return Lines.size() == 2;
}
//to check the slope of the given points
bool is_parallel(int arr[], int num) {
   bool slope1 = is_intercept(arr[1] - arr[0], arr, num);
   bool slope2 = is_intercept(arr[2] - arr[1], arr, num);
   bool slope3 = is_intercept((arr[2] - arr[0]) / 2, arr, num);
   return (slope1 || slope2 || slope3);
}
int main() {
   int arr[] = {2,6,8,12,14};
   int num = sizeof(arr)/sizeof(arr[0]);
   cout << (int)is_parallel(arr, num);
   return 0;
}

出力

1

  1. C++での2本の線の交点のプログラム

    線ABに対応する点AとB、および線PQに対応する点PとQが与えられます。タスクは、これら2つの線の交点を見つけることです。 注 −点はX座標とY座標の2D平面で与えられます。 ここで、A(a1、a2)、B(b1、b2)およびC(c1、c2)、D(d1、d2)は、2つの異なる線を形成している座標であり、P(p1、p2)は交点です。 (交点の図解のためだけに) 交点を見つける方法 − 上の図を-としましょう 例 したがって、(a1、a2)、(b1、b2)、(c1、c2)、(d1、d2)を使用して、:A1 =b2 --a2B1 =a1 --b1C1 =(A1 * a1)+( B1 *

  2. 数値が素数であるかどうかをチェックするC++プログラム

    素数は1より大きい整数であり、素数の唯一の要素は1とそれ自体でなければなりません。最初の素数のいくつかは-です 2, 3, 5, 7, 11, 13 ,17 数が素数かどうかをチェックするプログラムは次のとおりです。 例 #include <iostream> using namespace std; int main() {    int n=17, i, flag = 0;    for(i=2; i<=n/2; ++i) {       if(n%i==0) {     &nbs