Em chào các anh chị. Em là tân sinh viên ạ. Em muốn hỏi là làm sao để khi nhập 3 số nếu 3 số đó là bộ 3 pythagorean thì xuất ra 1. Ngược lại thì xuất ra 0. Yêu cầu không dùng define,if,for,switch,using… Do em mới học tới các kiểu dữ liệu thôi ạ. Em cám ơn các anh chị đã đọc ạ
Kiểm tra 3 số có phải bộ 3 Pitago mà không dùng define, if, for, switch, using,...?
Hi Nguyễn Hà Thuyên.
Cái này dễ thôi. Bạn kiểm tra điều kiện với các cạnh lần lượt là cạnh huyền rồi nhân hết với nhau là được.
Bonus point ấy mà dùng ternary đi bạn.
vấn đề là không biết làm chứ không quan trọng bonus hay không ạ
Dạ, có thể nói rõ hơn được không ạ
Hi Nguyễn Hà Thuyên.
Bài này khá hay dậy bạn cách vận dụng những công cụ bạn có.
- Nếu là tam giác vuông thì có một biểu thức : a^2 - b^2 - c^2 = 0.
- Cần kiểm tra tất cả các hoàn vị.
- Một số nhân với 0 bằng 0.
- Phần ra 1 thì mình đang nghĩ nốt.
dạ đúng rồi, mặc dù em đã học trước ngôn ngữ c++ khi đọc qua nghĩ rằng được dùng các câu lệnh ai rè phải sử dụng những thứ đơn giản nhất ^^
Hi nguyễn trường.
- OK Mình nghĩ ra phần ra 1 rồi.
- Cái này cũng như lập trình thôi. Bạn sẽ có một số công cụ và cần kết hợp nó để thực hiện mục đích của mình.
có thể chỉ dẫn giúp em được không ạ
- Biểu thức liên hệ giữa 3 cạnh của tam giác vuông.
- Toán tử 3 ngôi.
Chẳng cần phải toán tử 3 ngôi. In thẳng điều kiện ra là được.
Bạn nên cho mọi người biết hết mấy cái nó cấm, từ đó lách mới dễ chớ
Dùng !
int a, b, c;
int is_positive, is_ptg;
...
is_positive = a > 0 && b > 0 && c > 0;
a = a * a;
b = b * b;
c = c * c;
int is_ptg = (
!(c - (a + b)) ||
!(b - (a + c)) ||
!(a - (b + c))
);
return is_positive && is_ptg;
Rút gọn
int a, b, c;
...
return (
(a > 0 && b > 0 && c > 0) &&
!(((c = c*c) - (a = a*a) - (b = b*b)) &&
(b - a - c) &&
(a - b - c))
);
em cám ơn ạ. chúc anh buổi tối tốt lành
Bạn đánh tick cho câu trả lời tốt nhất nhé
toán tử 3 ngôi
(a*a==b*b+c*c) ? <...> : <...>