Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình kiểm tra ba điểm thẳng hàng trong C++


Cho ba điểm khác nhau, nhiệm vụ là kiểm tra xem ba điểm đó có thẳng hàng (collinear) hay không.

Ba điểm gọi là thẳng hàng nếu chúng nằm trên cùng một đường thẳng. Hình minh họa điểm thẳng hàng và không thẳng hàng:

Chương trình kiểm tra ba điểm thẳng hàng trong C++

Đầu vào 1

x1 = 1, x2 = 2, x3 = 3, y1 = 1, y2 = 4, y3 = 5

Đầu ra 1

ba điểm không thẳng hàng

Đầu vào 2

x1 = 1, y1 = 1, x2 = 1, y2 = 4, x3 = 1, y3 = 5

Đầu ra 2

ba điểm thẳng hàng

Phương pháp tiếp cận

  • Nhập tọa độ ba điểm: (x1, y1), (x2, y2), (x3, y3)
  • Áp dụng công thức diện tích tam giác: x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2)
  • Kiểm tra điều kiện:
    • Nếu diện tích = 0 → ba điểm thẳng hàng
    • Nếu diện tích ≠ 0 → ba điểm không thẳng hàng
  • In kết quả

Thuật toán

Bước 1 → Khai báo hàm kiểm tra thẳng hàng:
void kiemTraThangHang(int x1, int y1, int x2, int y2, int x3, int y3) {
    int a = x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2);
    if (a == 0)
        cout << "ba điểm thẳng hàng";
    else
        cout << "ba điểm không thẳng hàng";
}

Bước 2 → Trong main():
int x1 = 1, x2 = 2, x3 = 3, y1 = 1, y2 = 4, y3 = 5;
kiemTraThangHang(x1, y1, x2, y2, x3, y3);

Ví dụ mã nguồn

#include <bits/stdc++.h>
#include <math.h>
#include <stdlib.h>
using namespace std;

void kiemTraThangHang(int x1, int y1, int x2, int y2, int x3, int y3) {
    int a = x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2);
    if (a == 0)
        cout << "ba điểm thẳng hàng";
    else
        cout << "ba điểm không thẳng hàng";
}

int main() {
    int x1 = 1, x2 = 2, x3 = 3, y1 = 1, y2 = 4, y3 = 5;
    kiemTraThangHang(x1, y1, x2, y2, x3, y3);
    return 0;
}

Kết quả chạy chương trình

ba điểm không thẳng hàng