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(xA,yA),B(xB,yB),C(xC,yC) tạo thành tam giác và một điểm M(xM,yM) hãy chỉ ra vị trí tương đối của M so với ΔABC tức là chỉ ra M nằm trong, ngoài hay là nằm trên cạnh của Δ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á 104

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ΔABC=12||xAyAxByB|+|xByBxCyC|+|xCyCxAyA||

Hay

SΔABC=12|(xAyBxByA)+(xByCxCyB)+(xCyAxAyC)|

Ví dụ 1

Input

Copy
0 0 0 5 5 0 1 1

Output

Copy
M o trong tam giac

Ví dụ 2

Input

Copy
0 0 0 5 5 0 1 4

Output

Copy
M o tren canh tam giac

Ví dụ 3

Input

Copy
0 0 0 5 5 0 10 10

Output

Copy
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>

    Copy
    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.

    ~~~x2~~~