Tin học Kiểm tra 1 điểm có nằm trong tam giác

dangtiendung1201

Cựu Mod Toán
Thành viên
24 Tháng mười hai 2018
1,272
1,359
191
20
Thái Bình
THCS Lương Thế VInh-Thành phố Thái Bình
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Chương trình kiểm tra 1 điểm có tọa độ nguyên D(x4,y4) có nằm trong tam giác với các tọa độ đỉnh tam giác nguyên A(x1,y2); B(x2,y2); C(x3,y3). Trị tuyệt đối của các xi, yi nhỏ hơn 10^4.
Mã:
program tam_giac;
var
    x1,x2,x3,x4,y1,y2,y3,y4:integer;
    S,S1,S2,S3,S4:longint;
Begin
    Read(x1,y1);
    Read(x2,y2);
    Read(x3,y3);
    Read(x4,y4);
    S:=abs((x1*y2-x2*y1)+(x2*y3-x3*y2)+(x3*y1-x1*y3));
    S1:=abs((x2*y3-x3*y2)+(x3*y4-x4*y3)+(x4*y2-x2*y4));
    S2:=abs((x1*y3-x3*y1)+(x3*y4-x4*y3)+(x4*y1-x1*y4));
    S3:=abs((x1*y2-x2*y1)+(x2*y4-x4*y2)+(x4*y1-x1*y4));
    If (S1>0) and (S2>0) and (S3>0) = TRUE
    then
        Begin
        If S1+S2+S3=S then
          write ('YES')
          else
          write ('NO');
        End
    else
      write ('NO');
      readln;
End.
 
Last edited:

trà nguyễn hữu nghĩa

Cựu Mod Vật Lí |Cây bút Thơ|Thần tượng VH
Thành viên
14 Tháng năm 2017
3,974
7,619
744
21
Phú Yên
Trường THPT Lương Văn Chánh
Chương trình kiểm tra 1 điểm có tọa độ nguyên D(x4,y4) có nằm trong tam giác với các tọa độ đỉnh tam giác nguyên A(x1,y2); B(x2,y2); C(x3,y3). Trị tuyệt đối của các xi, yi nhỏ hơn 10^4.
Mã:
program tam_giac;
var
    x1,x2,x3,x4,y1,y2,y3,y4:integer;
    S,S1,S2,S3:longint;
Begin
    Readln(x1,x2,x3,x4,y1,y2,y3,y4);
    S:=abs((x2-x1)*(y2-y1)+(x3-x2)*(y3-y2)+(x1-x3)*(y1-y3));
    S1:=abs((x2-x1)*(y2-y1)+(x4-x2)*(y4-y2)+(x1-x4)*(y1-y4));
    S2:=abs((x1-x3)*(y1-y3)+(x4-x1)*(y4-y1)+(x3-x4)*(y3-y4));
    S3:=abs((x2-x4)*(y2-y4)+(x4-x3)*(y4-y3)+(x3-x2)*(y3-y2));
    If (S1>0) and (S2>0) and (S3>0)[COLOR=#ff0000] = TRUE[/COLOR]
    then
        Begin
        If S1+S2+S3=S then
          write ('YES')
          else
          write ('NO');
        End
    else
      write ('NO');
      readln;
End.
sao lại có bằng true nhỉ, với lại mình chả hiểu thuật toán đang viết gì
 
  • Like
Reactions: dangtiendung1201

dangtiendung1201

Cựu Mod Toán
Thành viên
24 Tháng mười hai 2018
1,272
1,359
191
20
Thái Bình
THCS Lương Thế VInh-Thành phố Thái Bình
sao lại có bằng true nhỉ, với lại mình chả hiểu thuật toán đang viết gì
Em sửa lại rồi ạ. Thuật toán dùng công thức Shoelace (do không biết dùng véctơ thế nào nên em phải xài nó) để tính diện tích tam giác. Lúc đầu em viết nhầm sau sửa lại rồi ạ.
Cái chỗ = TRUE là để kiểm tra xem cái điểm X nó có nằm trên cạnh của tam giác không ạ. Nếu X mà nằm trên cạnh tam giác hay trùng với đỉnh tam giác thì 1 trong 3 cái S1, S2, S3 sẽ =0.
 

trà nguyễn hữu nghĩa

Cựu Mod Vật Lí |Cây bút Thơ|Thần tượng VH
Thành viên
14 Tháng năm 2017
3,974
7,619
744
21
Phú Yên
Trường THPT Lương Văn Chánh
Em sửa lại rồi ạ. Thuật toán dùng công thức Shoelace (do không biết dùng véctơ thế nào nên em phải xài nó) để tính diện tích tam giác. Lúc đầu em viết nhầm sau sửa lại rồi ạ.
Cái chỗ = TRUE là để kiểm tra xem cái điểm X nó có nằm trên cạnh của tam giác không ạ. Nếu X mà nằm trên cạnh tam giác hay trùng với đỉnh tam giác thì 1 trong 3 cái S1, S2, S3 sẽ =0.
Vậy thuật toán này có vấn đề gì nữa đâu nhỉ
 
  • Like
Reactions: dangtiendung1201
Top Bottom