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

Số điểm tích phân giữa hai điểm trong C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình tìm số điểm tích phân giữa hai điểm đã cho.

Số điểm giữa hai điểm đã cho sẽ là gcd (abs (x2), abs (y1-y2)) - 1.

Nếu đường nối song song với trục x, thì số điểm tích phân sẽ là abs (y1 - y2) - 1.

Nếu đường nối song song với trục y, thì số điểm tích phân sẽ là abs (x1 - x2) - 1

Nếu hoành độ x của cả hai điểm bằng nhau thì chúng song song với trục x. Nếu điểm y của cả hai điểm bằng nhau thì chúng song song với trục y.

Hãy xem một ví dụ.

Đầu vào

pointOne = [1, 5]
pointTwo = [1, 3]

Đầu ra

1

Thuật toán

  • Khởi tạo hai điểm.
  • Kiểm tra xem chúng có song song với trục x hay không.
  • Nếu chúng song song với trục x, thì hãy sử dụng công thức abs (y1 - y2) - 1.
  • Kiểm tra xem chúng có song song với trục y hay không.
  • Nếu chúng song song với trục y, thì hãy sử dụng công thức abs (x1 - x2) - 1.
  • Nếu chúng không song song với bất kỳ trục nào, hãy sử dụng công thức gcd (abs (x1-x2), abs (y1- y2)) - 1.
  • Tính toán kết quả và in ra.

Thực hiện

Sau đây là cách thực hiện thuật toán trên trong C ++

#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
   if (b == 0) {
      return a;
   }
   return gcd(b, a % b);
}
int getCount(int pointOne[], int pointTwo[]) {
   if (pointOne[0] == pointTwo[0]) {
      return abs(pointOne[1] - pointTwo[1]) - 1;
   }
   if (pointOne[1] == pointTwo[1]) {
      return abs(pointOne[0] - pointTwo[0]) - 1;
   }
   return gcd(abs(pointOne[0] - pointTwo[0]), abs(pointOne[1] - pointTwo[1])) - 1;
}
int main() {
   int pointOne[] = {1, 3}, pointTwo[] = {10, 12};
   cout << getCount(pointOne, pointTwo) << endl;
   return 0;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

8