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

Chương trình C ++ sử dụng ở trên bên dưới nguyên thủy để kiểm tra xem hai đường thẳng có giao nhau không

Đây là một chương trình C ++ để sử dụng ở trên bên dưới nguyên thủy để kiểm tra xem hai đường thẳng có giao nhau không. Nó có thể được sử dụng để kiểm tra xem một đường thẳng có cắt một đoạn thẳng hay không. Nó thực hiện nếu và chỉ khi một điểm cuối của đoạn nằm ở bên trái của đoạn thẳng và điểm cuối của đoạn còn lại ở bên phải.

Thuật toán

Begin
   For generating equation of the first line, generate random numbers for coefficient of x and y by using rand at every time of compilation.
   For generating equation of the second line, generate random numbers for coefficient of x and y by using rand at every time of compilation.
   Find the segment of line 1 as Y1.
   if (Y1 < 0)
      Find the segment of line 2
   if (Y2 >= 0)
      print they are intersecting.
   else if (Y2 < 0)
      print they are not intersecting.
   else if (Y1 >0)
      Find the segment of line 2
   if (Y2 <= 0)
      print they are intersecting.
   else if (Y2 >0)
      print they are not intersecting.
End.

Mã mẫu

#include<time.h>
#include<stdlib.h>
#include<iostream>
#include<math.h>

using namespace std;
const int L = 2;
const int H= 20;
int main(int argc, char **argv) {
   time_t s;
   time(&s);
   srand((unsigned int) s);

   int x1, x2, y1, y2;
   x1 = rand() % (H - L+ 1) + L;
   x2 = rand() % (H - L+ 1) + L;
   y1 = rand() % (H- L+ 1) + L;
   y2 = rand() % (H - L + 1) + L;

   cout << "The Equation of the 1st line is : (" << (y2 - y1) << ")x+(" << (x1 - x2) << ")y+(" << (x2 * y1 - x1 * y2) << ") = 0\n";

   int p1, p2, q1, q2;
   p1 = rand() % (H- L+ 1) + L;
   p2 = rand() % (H- L + 1) + L;
   q1 = rand() % (H - L + 1) + L;
   q2 = rand() % (H - L + 1) + L;

   cout << "The Equation of the 2nd line is : (" << (q2 - q1) << ")x+(" << (p1 - p2) << ")y+(" << (p2 * q1 - p1 * q2) << ") = 0\n";

   int Y1 = (y2 - y1) * p1 + (x1 - x2) * q1 + (x2 * y1 - x1 * y2); //Y1 segment
   if (Y1 < 0) {
      int Y2 = (y2 - y1) * p2 + (x1 - x2) * q2 + (x2 * y1 - x1 * y2); //Y2 segment
   if (Y2 >= 0)
      cout << "Lines are intersecting";
   else if (Y2 < 0)
      cout << "Lines are not intersecting";
   } else if (Y1 >0) {
      int Y2 = (y2 - y1) * p2 + (x1 - x2) * q2 + (x2 * y1 - x1 * y2);
      if (Y2 <= 0)
         cout << "Lines are intersecting";
      else if (Y2 >0)
         cout << "Lines are not intersecting";
   } else
      cout << "The point lies on the line";
   return 0;
}

Đầu ra

The Equation of the 1st line is : (-3)x+(2)y+(1) = 0
The Equation of the 2nd line is : (-5)x+(-5)y+(130) = 0
Lines are intersecting


The Equation of the 1st line is : (-1)x+(7)y+(-15) = 0
The Equation of the 2nd line is : (-4)x+(4)y+(-8) = 0
Lines are not intersecting