Hi
Mình còn lưu 1 bài hồi trước mình học đây, ko biết nó có thể giúp gì cho bạn không? :)
//Bài toán xét 3 điểm có phải là 1 tam giác hay không? Xét vị trí tương đối giữa 1 điểm và tam giác đó
#include <stdio.h>
#include <conio.h>
#include <math.h>
typedef struct
{
float x;
float y;
} toado;
float khoangcach(toado a,toado b)
{
return (sqrt(pow((a.x-b.x),2)+pow((a.y-b.y),2)));
}
void nhaptoado(toado& a)
{
printf("Nhap hoanh do x: ");
scanf("%f",&a.x);
printf("Nhap tung do y: ");
scanf("%f",&a.y);
printf("\n\n");
}
/*vì vector cũng có dạng tọa độ như điểm nên mình
dùng luôn struct toado thay cho việc phải khai báo struct
vector.Hàm này tính tọa độ các vector dựa trên tọa độ 2 điểm.*/
toado vector(toado a,toado b)
{
toado vector;
vector.x=b.x-a.x;
vector.y=b.y-a.y;
return vector;
}
float dinhthuc(toado a,toado b)
{
return (a.x*b.y-b.x*a.y);
}
void main()
{
toado a,b,c,m,am,ac,bm,ba,cm,cb;
printf("Nhap toa do diem thu nhat:\n");
nhaptoado(a);
printf("Nhap toa do diem thu hai:\n");
nhaptoado(b);
printf("Nhap toa do diem thu ba:\n");
nhaptoado(c);
if (((khoangcach(a,b)+khoangcach(a,c))>(khoangcach(b,c)))&&
((khoangcach(a,c)+khoangcach(b,c))>(khoangcach(b,a)))&&
((khoangcach(c,b)+khoangcach(a,b))>(khoangcach(a,c))))
printf("3 diem la ba canh tam giac\n\n");
else printf("3 diem khong la ba canh tam giac\n\n");
printf("Nhap toa do diem thu tu:\n");
nhaptoado(m);
printf("\n\n");
am=vector(a,m);ac=vector(a,c);
bm=vector(b,m);ba=vector(b,a);
cm=vector(c,m);cb=vector(c,b);
if (((dinhthuc(am,ac)>0)&&(dinhthuc(bm,ba)>0)&&(dinhthuc(cm,cb)>0))||
((dinhthuc(am,ac)<0)&&(dinhthuc(bm,ba)<0)&&(dinhthuc(cm,cb)<0)))
printf("Diem M(%f , %f ) thuoc tam giac da cho",m.x,m.y);
else printf("Diem M(%f , %f ) khong thuoc tam giac da cho",m.x,m.y);
getch();
}
Thông tin liên hệ anh2bmw khi có bất kỳ thắc mắc:
skype: trantien281
mail: anh2bmw@gmail.com