Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tính diện tích tam giác bằng định thức (determinant) trong C++


Diện tích tam giác trong mặt phẳng 2D với 3 đỉnh (x1,y1), (x2,y2), (x3,y3) bằng nửa giá trị tuyệt đối của định thức ma trận 3x3:

$$Area = \frac{1}{2} \left| \begin{vmatrix} x_1 & y_1 & 1 \\ x_2 & y_2 & 1 \\ x_3 & y_3 & 1 \end{vmatrix} \right|$$

Ví dụ code

#include <iostream>
#include <cmath>
using namespace std;

double det(double M[3][3]) {
    double t1 = M[1][1]*M[2][2] - M[1][2]*M[2][1];
    double t2 = M[1][0]*M[2][2] - M[1][2]*M[2][0];
    double t3 = M[1][0]*M[2][1] - M[1][1]*M[2][0];
    return M[0][0]*t1 - M[0][1]*t2 + M[0][2]*t3;
}

int main() {
    double M[3][3];
    cout << "Điểm 1 (x y): "; cin >> M[0][0] >> M[0][1]; M[0][2] = 1;
    cout << "Điểm 2 (x y): "; cin >> M[1][0] >> M[1][1]; M[1][2] = 1;
    cout << "Điểm 3 (x y): "; cin >> M[2][0] >> M[2][1]; M[2][2] = 1;
    double area = fabs(det(M)) * 0.5;
    cout << "Diện tích: " << area;
}

Kết quả

Điểm 1: 3 4
Điểm 2: 6 4
Điểm 3: 3 9
Diện tích: 7.5