#include <iostream>  
#include <cmath>     
using namespace std;
 
 
void nhap_so(double&, double&, double&);   // Hàm nhập ba cạnh
void loai_tam_giac(double, double, double); // Hàm xác định loại tam giác
 
int main() {
    double a, b, c;      
    nhap_so(a, b, c);    
    loai_tam_giac(a, b, c); 
    return 0;
}
 
void nhap_so(double &a, double &b, double &c) {
    // Dùng vòng lặp để bắt người dùng nhập lại nếu nhập sai
    do {
        cout << "Nhap so cho canh dau tien : ";
        cin >> a;
        cout << "Nhap so cho canh thu hai : ";
        cin >> b;
        cout << "Nhap so cho canh thu ba  : ";
        cin >> c;
 
        // Nếu có cạnh <= 0 thì thông báo lỗi
        if (a <= 0 || b <= 0 || c <= 0)
            cout << "Canh khong hop le! Moi nhap lai.\n";
 
    } while (a <= 0 || b <= 0 || c <= 0); 
}
 
 
void loai_tam_giac(double a, double b, double c) {
    const double eps = 1e-6; // Sai số cho so sánh số thực (để tránh lỗi do làm tròn)
 
    // Bước 1: Kiểm tra điều kiện tồn tại của tam giác
    // Tổng hai cạnh phải lớn hơn cạnh còn lại
    // Dùng "eps" để xử lý trường hợp sai số dấu phẩy động (floating point error)
    if (a + b <= c + eps || a + c <= b + eps || b + c <= a + eps) {
        cout << "Khong ton tai tam giac\n";
        return;
    }
 
    // Bước 2: Xác định loại tam giác
    bool deu = false;   // Biến đánh dấu tam giác đều
    bool can = false;   // Biến đánh dấu tam giác cân
    bool vuong = false; // Biến đánh dấu tam giác vuông
 
    // So sánh bằng "fabs(... ) < eps" để tránh sai số khi nhập số thực
    // Kiểm tra tam giác đều
    if (fabs(a - b) < eps && fabs(b - c) < eps)
        deu = true; 
	// Kiểm tra tam giác cân
    else if (fabs(a - b) < eps || fabs(b - c) < eps || fabs(a - c) < eps)
        can = true; 
 
    // Kiểm tra tam giác vuông
    // Gọi maxSide là cạnh lớn nhất (vì cạnh lớn nhất sẽ là cạnh huyền nếu vuông)
    double maxSide = max(a, max(b, c));
 
    // Tổng bình phương 3 cạnh = 2 * bình phương cạnh lớn nhất nếu tam giác vuông
    double sum = a*a + b*b + c*c;
    if (fabs(2 * maxSide * maxSide - sum) < eps)
        vuong = true;
 
    // Bước 4: In kết quả
    // Ưu tiên phân loại đặc biệt trước (đều, vuông cân)
    if (deu)
        cout << "Tam giac deu\n";
    else if (vuong && can)
        cout << "Tam giac vuong can\n";
    else if (vuong)
        cout << "Tam giac vuong\n";
    else if (can)
        cout << "Tam giac can\n";
    else
        cout << "Tam giac thuong\n";
}