Kiểm tra 3 cạnh và loại tam giác

Giải pháp

Để kiểm tra tam giác: tổng hai cạnh bất kì lớn hơn cạnh còn lại

Để phân loại tam giác: 

– Tam giác đều: 3 cạnh bằng nhau

– Tam giác cân:  có 2 cạnh bằng nhau nhưng không bằng cạnh còn lại (nghĩa là: nó không đều)

– Tam giác vuông: áp dụng công thức Pi-ta-go

– Tam giác vuông cân: nó vừa vuông, vừa cân 🙂 Nói thì dễ, nhưng trường hợp này lại khó kiểm tra nhất. Hãy xem thêm ở phần dưới.

– Tam giác tù: có một góc lớn hơn 90 độ => cosin của góc đó < 0 => Có một cạnh mà bình phương của nó lớn hơn tổng bình phương hai cạnh còn lại

– Tam giác nhọn: nếu nó không phải các loại trên 🙂 

Một số lưu ý

– Phép so sánh bằng có tính chất bắc cầu. Nếu kiểm tra tam giác đều thì chỉ cần kiểm tra (a==b) && (b==c)

– Trường hợp tam giác vuông cân, chắc chắn có cạnh là số vô tỉ. Người dùng không thể nhập chính xác số đó được. Do đó, chúng ta sẽ chấp nhận một sai số nhất định. 

Ví dụ: nếu người dùng nhập vào 1, 1  và 1.414 chúng ta sẽ chấp nhận đó là một tam giác vuông cân

– Chú ý sắp xếp thứ tự các điều kiện để tận dụng lẫn nhau

Áp dụng vào chương trình

Code C# 

Đừng nhìn ngay xuống code này nhé. Nếu bạn chưa đọc đoạn trên thì nên quay lại để đọc kĩ đã

public string CheckTriangle(decimal a, decimal b, decimal c)
{
    //// Điều kiện tam giác
    if (a + b > c && b + c > a && c + a > b)
    {
        //// Định nghĩa độ lệch cho phép
        decimal epsilon = 0.0001m;

        if (a == b && b == c)
        {
            return "Tam giác đều";
        }
        else if (a == b || b == c || c == a)
        {
            //// Kiểm tra thêm xem có phải là tam giác vuông nữa không
            if (Math.Abs(a * a + b * b - c * c) <= epsilon
                || Math.Abs(b * b + c * c - a * a) <= epsilon
                || Math.Abs(c * c + a * a - b * b) <= epsilon)
            {
                return "Tam giác vuông cân";
            }
            else
            {
                return "Tam giác cân";
            }
        }
        else if (Math.Abs(a * a + b * b - c * c) <= epsilon
                || Math.Abs(b * b + c * c - a * a) <= epsilon
                || Math.Abs(c * c + a * a - b * b) <= epsilon)
        {
            return "Tam giác vuông";
        }
        else if (a * a + b * b + epsilon < c * c
            || b * b + c * c + epsilon < a * a
            || c * c + a * a + epsilon < b * b)
        {
            return "Tam giác tù";
        }
        else
        {
            return "Tam giác nhọn";
        }
    }
    else
    {
        return "Không phải tam giác";
    }

}

Bạn có thể áp dụng tương tự cho các ngôn ngữ lập trình khác 🙂 

 

Hãy là người đầu tiên bình luận chủ đề này.

Thêm bình luận/ đặt câu hỏi