

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
`***` Các lỗi bạn gặp phải:
`1.` Bạn lưu ý ý nghĩa của các toán tử trong C++ nhé:
\begin{array}{|c|c|c|}\hline \text{Toán tử}&\text{Ý nghĩa}\\\hline \text{=}&\text{Gán giá trị cho một biến}\\\hline \text{==} & \text{So sánh 2 giá trị có bằng nhau hay không} \\\hline \end{array}
`=>` Vì vậy nên code của bạn báo lỗi ở đoạn if (...), lí do là bạn không sử dụng toán tử phù hợp.
`2.` Mình cũng lưu ý với bạn là không so sánh `a`==`b`==`c` nhé! Lí do là vì phép so sánh trong C++ chỉ hỗ trợ `1` phép so sánh duy nhất trong một thời điểm (cũng có ngôn ngữ hỗ trợ so sánh kiểu đó, vd: Python, ...), vì vậy `a`==`b`==c sẽ trả về `1`==c, vì vậy phép này chỉ đúng khi `c`==`1` và `a`, `b` có thể khác `c` nó vẫn trả về true.
`=>` Thay `a`==`b`==`c` thành `a`==`b` && `b`==`c`
`3.` Mình cũng lưu ý là:
`+` Tam giác vuông cân là trường hợp đặc biệt của tam giác vuông và tam giác cân.
`+` Tam giác đều là trường hợp đặc biệt của tam giác cân.
`->` Vì thế nên cho dù bạn có nhập cạnh là trường hợp đặc biệt đi nữa thì kết quả xuất ra vẫn ra trường hợp bình thường.
`=>` Để sửa lỗi này, bạn chỉ cần đưa `2` trường hợp đặc biệt lên trên.
`***` Code sau khi sửa:
`+` Code:
#include <bits/stdc++.h>
using namespace std;
double a,b,c;
int main()
{
cin>>a>>b>>c;
if ((a+b>c) and (b+c>a) and (a+c>b))
{
if((a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) && (a==b||a==c||b==c))
{
cout<<"Tam giac vuong can";
}
else if(a==b && b==c)
{
cout<<"Tam giac deu";
}
else if((a*a)+(b*b)==(c*c)||(a*a)+(c*c)==(b*b)||(b*b)+(c*c)==(a*a))
{
cout<<"Tam giac vuong";
}
else if((a==b)or(a==c)or(b==c))
{
cout<<"Tam giac can";
}
else if(a*a+b*b<c*c||a*a+c*c<b*b||b*b+c*c<a*a)
{
cout<<"Tam giac tu";
}
else if(a*a+b*b>c*c||a*a+c*c>b*b||b*b+c*c>a*a)
{
cout<<"Tam giac nhon";
}
}
else
{
cout<<"Khong phai tam giac";
}
}
`+` Test code: Ảnh
$\\$
`@Daoanhviet96`
Hãy giúp mọi người biết câu trả lời này thế nào?
Code
#include <bits/stdc++.h>;
using namespace std;
double a,b,c;
int main()
{
cin>>a>>b>>c;
if ((a+b>c) and (b+c>a) and (a+c>b))
{
if((a*a)+(b*b)==(c*c)||(a*a)+(c*c)==(b*b)||(b*b)+(c*c)==(a*a))
{
cout<<"Tam giac vuong";
}
else if((a==b)or(a==c)or(b==c))
{
cout<<"Tam giac can";
}
else if((a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) && (a==b||a==c||b==c))
{
cout<<"Tam giac vuong can";
}
else if(a==b==c)
{
cout<<"Tam giac deu";
}
else if(a*a+b*b<c*c||a*a+c*c<b*b||b*b+c*c<a*a)
{
cout<<"Tam giac tu";
}
else if(a*a+b*b>c*c||a*a+c*c>b*b||b*b+c*c>a*a)
{
cout<<"Tam giac nhon";
}
}
else
{
cout<<"Khong phai tam giac";
}
}
Lỗi
- Trong C++ để so sánh bằng thì ta dùng toán tử "==" chứ không phải "=" nhé.
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin
36
915
20
Thanks bn nha, mình mới học code nên hời cùi :))