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

Kiểm tra đường thẳng đi qua gốc tọa độ C++


Cho 2 điểm A(x₁,y₁), B(x₂,y₂). Kiểm tra đường thẳng AB có đi qua gốc O(0,0) không.

Điều kiện

3 điểm thẳng hàng ⇔ Diện tích tam giác = 0 ⇔ x₁(y₂ - 0) + x₂(0 - y₁) + 0(y₁ - y₂) = 0

⇔ x₁y₂ = x₂y₁ ⇔ x₁/y₁ = x₂/y₂ (nếu y₁,y₂ ≠ 0).

Chương trình C++

#include <iostream>
using namespace std;

bool passesThroughOrigin(int x1, int y1, int x2, int y2) {
    return 1LL * x1 * y2 == 1LL * x2 * y1;
}

int main() {
    vector> tests = {
        {10,0, 20,0},   // truc x
        {0,5, 0,10},    // truc y
        {1,1, 2,2},     // y=x
        {1,2, 2,5},     // khong qua goc
        {-3,6, 2,-4}    // y=-2x
    };
    
    for (auto [x1,y1,x2,y2] : tests) {
        cout << "(" << x1 << "," << y1 << ")-(" << x2 << "," << y2 << "): "
             << (passesThroughOrigin(x1,y1,x2,y2) ? "Qua goc" : "Khong qua goc") << "\n";
    }
    return 0;
}

Kết quả

(10,0)-(20,0): Qua goc
(0,5)-(0,10): Qua goc
(1,1)-(2,2): Qua goc
(1,2)-(2,5): Khong qua goc
(-3,6)-(2,-4): Qua goc