Vị trí tương đối giữa điểm và tam giác



Đề bài: Viết chương trình sử dụng ngôn ngữ C/C++ nhập vào tọa độ các đỉnh của tam giác ABC và của điểm M. Xác định điểm M nằm trong, nằm trên cạnh hay nằm ngoài tam giác ABC.
Yêu cầu kiến thức:

  • Xác định đúng kiểu dữ liệu của các biến
  • Nắm được cách tính diện tích tam giác khi biết tọa độ 3 điểm
Kiến thức toán học:

Chúng ta có được công thức tính diện tích tam giác ABC như sau:

dien tich tam giac

Diện tích tam giác

Trong hệ tọa độ Oxy, giả sử đặt tọa độ của 3 điểm A, B và C là:
toa do 3 diem ABC

Tọa độ 3 điểm A, B, C

Khi đó ta có:
cong thuc tinh dien tich tam giac

Công thức tính diện tích tam giác

Hay ta thể viết lại công thức theo cách tính như sau:
khai trien cong thuc tinh dien tich tam giac

Khai triển công thức tính diện tích tam giác

Code tham khảo dưới được lưu với phần mở rộng là “.cpp”:


// Ho ten: Hoang Van Tuan
// Website: timoday.edu.vn
// De bai:
/* Bai 5: Vi ri tuong doi cua diem va tam giac */

#include<iostream>
#include<stdio.h>
#include<math.h>

using namespace std;

// Khai bao ham
float tinhDienTich(float xA, float yA, float xB, float yB, float xC, float yC); // Ham tinh DT khi biet toa do 3 diem

//===chuong trinh chinh===
int main()
{
    // Khai bao bien
    float xA, yA, xB, yB,xC, yC, xM, yM;
    float d, dtMAB, dtMAC, dtMBC, dtABC;

    // Nhap du lieu
    printf("Nhap vao tung do diem A: "); cin>>xA;
    printf("Nhap vao hoanh do diem A: "); cin>>yA;
    printf("Nhap vao tung do diem B: "); cin>>xB;
    printf("Nhap vao hoanh do diem B: "); cin>>yB;
    printf("Nhap vao tung do diem C: "); cin>>xC;
    printf("Nhap vao hoanh do diem C: "); cin>>yC;
    printf("Nhap vao tung do diem M: "); cin>>xM;
    printf("Nhap vao hoanh do diem M: "); cin>>yM;

    // Bien luan vi tri tuong doi
    dtMAB = tinhDienTich(xM, yM, xA, yA, xB, yB);
    dtMAC = tinhDienTich(xM, yM, xA, yA, xC, yC);
    dtMBC = tinhDienTich(xM, yM, xB, yB, xC, yC);
    dtABC = tinhDienTich(xA, yA, xB, yB, xC, yC);

    d = dtMAB+dtMAC+dtMBC-dtABC;

    if(d>0)
    {
        printf("M nam ngoai tam giac ABC");
    }
    else if(dtMAB==0 || dtMAC==0 || dtMBC==0)
    {
        printf("M nam tren canh cua tam giac ABC");
    }
    else
    {
        printf("M nam trong tam giac ABC");
    }

    cout<<endl;
    return 0;
}
//===dinh nghia ham===
float tinhDienTich(float xA, float yA, float xB, float yB, float xC, float yC)
{
    return 0.5*fabs(xA*yB-xB*yA+xB*yC-xC*yB+xC*yA-xA*yC);
}


Kết luận:

  • Bạn có thể tham khảo thêm khóa học lập trình C từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Thành thạo lập trình C#. Xem tại đây

Có thể bạn sẽ thích…

Trả lời

EnglishVietnamese