Nhập dữ liệu và kiểm tra 3 số đó là tam giác gì: đều, vuông cân, cân, vuông hay thường

Em bị vướng mắc chỗ kiểm tra xem đó có phải là tam giác vuông cân hay không, mà bao lần nhập nó chỉ hiện ra là tam giác cân dù nó có cả vuông cân . Mong mọi người giúp đỡ

Vuông cân thì phải là (a==b && a*a + b*b == c*c) || (...) chứ nhỉ? Hay mình nhầm :confused:
Mà phải check nó có là tam giác không đã trước chứ

2 Likes

Các giá trị a, b, c có phải kiểu float (hay double) không?
So sánh số thực mà dùng phép toán == thì chả mấy khi chúng bằng nhau sau khi tính toán.
Bạn nên viết 1 phương thức để so sánh 2 số thực có bằng nhau hay không với 1 sai số cho phép.
Nguyên mẫu:

public static boolean isEquals(double a, double b, double epsilon){
    // So sánh hai số a và b có bằng nhau trong phạm vi epsilon.
}
2 Likes

vuông cân không thể nào viết code để check được
lý do là người ta không thể nào nhập số hữu tỉ vô hạn không tuần hoàn (cạnh huyền là một số gì đó nhân với căn 2, ai nhập được số như vậy)

4 Likes

trường hợp bạn nói mình cũng có code trc đó rùi nhưng vẫn vậy và cái trên là mình tham khảo nhưng cơ bản vẫn giống nhau. còn nó có phải tam giác không thì mình check sau cùng vs trg hợp tam giác thường. nếu thỏa mãn là vuông cân thì chắc chắn là tam giác nên k cần check

image
mình dùng 1 biến trung gian là d và d = c * c nhưng khi xét điều kiện thì mình vẫn dùng c để xét thỏa mãn

image
các giá trị a , b ,c đều là double và mình có dùng 1 biến trung gian là d khi nhập , d = c*c nhưng khi xét điều kiện tam giác vẫn là dùng c . chằng hiểu sao khi xét đến trg hợp tam giác vuông cân thì nó luôn bỏ qua và cho là tam giác cân luôn

cái cơ bản nhất là kiểu số thực thì không thể so sánh bằng
phải có một quy ước là lệch bao nhiêu thì tính là bằng, như ông trên kia đã gợi ý

4 Likes
  • cậu thử tách thành hai hàm check TG vuông và TG cân và khi xét đến tam giác vuông cân thì cho cả hai hàm trả về true xem sao?
  • giữa phép so sánh số thực, cậu điều chỉnh số chữ số sau dấu phẩy để đưa về giá trị cụ thể

Cho bạn xem trang này:
https://0.30000000000000004.com/#java

Vấn đề vẫn nằm ở phép so sánh == mà thôi.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?