Vị trí tương đối của một điểm so với tam giác


Submit solution

Points: 1
Time limit: 1.0s
Memory limit: 977M

Author:
Problem types
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Titi học về tọa độ Đề-các vuông góc 2 chiều và rất thích thú với tọa độ các điểm. Bài tập về nhà cô giáo cho 3 điểm \(A(x_A,y_A) , B(x_B,y_B) , C(x_C,y_C) \) tạo thành tam giác và một điểm \(M(x_M, y_M)\) hãy chỉ ra vị trí tương đối của M so với \(\Delta ABC\) tức là chỉ ra M nằm trong, ngoài hay là nằm trên cạnh của \(\Delta ABC\). Bài toán khó quá, bạn lập trình giúp Titi nhé

Input

Một dòng gồm 8 số nguyên tương ứng với tọa độ của \(A, B, C, M\) có giá trị tuyệt đối không vượt quá \(10^4\)

Output

Nếu điểm M ở trong tam giác in ra "M o trong tam giac"

Nếu điểm M ở ngoài tam giác in ra "M o ngoai tam giac"

Nếu điểm M ở trên cạnh tam giác in ra "M o tren canh tam giac"

Gợi ý

Áp dụng công thức tính diện tích tam giác như sau: \[ {{S}_{\Delta ABC}}=\frac{1}{2}\left| \left| \begin{matrix} {{x}_{A}} & {{y}_{A}} \\ {{x}_{B}} & {{y}_{B}} \\ \end{matrix} \right|+\left| \begin{matrix} {{x}_{B}} & {{y}_{B}} \\ {{x}_{C}} & {{y}_{C}} \\ \end{matrix} \right|+\left| \begin{matrix} {{x}_{C}} & {{y}_{C}} \\ {{x}_{A}} & {{y}_{A}} \\ \end{matrix} \right| \right| \]

Hay

\[{{S}_{\Delta ABC}}=\frac{1}{2}\left| \left( {{x}_{A}}{{y}_{B}}-{{x}_{B}}{{y}_{A}} \right)+\left( {{x}_{B}}{{y}_{C}}-{{x}_{C}}{{y}_{B}} \right)+\left( {{x}_{C}}{{y}_{A}}-{{x}_{A}}{{y}_{C}} \right) \right|\]

Ví dụ 1

Input

0 0 0 5 5 0 1 1

Output

M o trong tam giac

Ví dụ 2

Input

0 0 0 5 5 0 1 4

Output

M o tren canh tam giac

Ví dụ 3

Input

0 0 0 5 5 0 10 10

Output

M o ngoai tam giac
tichpx

Comments


  • -4
    minyoongi  commented on Oct. 7, 2020, 11:18 a.m. edited

    hi


  • 0
    enoughtodie99  commented on Oct. 21, 2018, 3:02 p.m. edited

    include <bits/stdc++.h>

    using namespace std;
    class Diem{
        public:
            int x, y;
            void Nhap()
            {
                cin >> x >> y;
            }
    };
    float DT(Diem A, Diem B, Diem C)
    {
        float s = (float)abs((A.x*B.y - B.x*A.y) + (B.x*C.y - C.x*B.y) + (C.x*A.y - A.x*C.y))/2;
        return s;
    }
    int main()
    {
        Diem a[4];
        for(int i = 0; i < 4 ; i ++)
            a[i].Nhap();
        if(DT(a[0],a[1],a[2]) < DT(a[0],a[1],a[3]) + DT(a[1],a[2],a[3]) + DT(a[2], a[0], a[3]))
            cout << "M o ngoai tam giac";
        else if(!DT(a[0],a[1],a[3]) || !DT(a[1],a[2],a[3]) || !DT(a[2], a[0], a[3]))
            cout << "M o tren canh tam giac";
        else if(DT(a[0],a[1],a[2]) == DT(a[0],a[1],a[3]) + DT(a[1],a[2],a[3]) + DT(a[2], a[0], a[3]))
            cout << "M o trong tam giac";
    
    }

    • 2
      I_love_NguyenLinh  commented on Oct. 21, 2018, 3:07 p.m.

      lần sau muốn up code thì dùng Code Sample ở trên thanh công cụ nhé :D up thế này ai đọc đc


  • -4
    coderjs  commented on Oct. 16, 2018, 1:10 p.m.

    ~~~\(x^2\)~~~