30/09/2018, 21:09
Bài toán diện tích tam giác!
Nhập vào 3 số a, b, c là độ dài 3 cạnh của tam giác. Hãy đưa ra màn hình giá trị diện tích
#include<iostream>
#include<math.h>
using namespace std;
float dientich(int a, int b, int c)
{
float p;
float s;
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
return (s);
}
int main()
{
int a,b,c,x,y,z;
cout<<"Nhap 3 canh cua tam giac."<<endl;
cout<<"Canh thu 1 ";cin>>a;
cout<<"Canh thu 2 ";cin>>b;
cout<<"Canh thu 3 ";cin>>c;
cout<<"Dien tich hinh tam giac la: "<<dientich(a,b,c);
system("pause");
}
Bài liên quan
Ko hiểu sai chạy n cứ ra 0
Có ai biết chỉ e với
Bạn sai cái gì nói rõ ra mọi người mới giúp đc chứ
Về synax bạn có vẻ như không sai gì.
Nhưng về logic sao các cạnh của tam giác lại để kiểu dữ liệu là integer ?
Và cách trình bày đoạn code của bạn nhìn rối mắt quá @@
Mình thử trình bày như sau bạn xem có dễ đọc code hơn không nhé
Chạy nó cứ ra đáp án là 0,
chuyển về float nhưng vẫn sai bạn à. Kết quả mặc định là 0. ko biết sai chỗ nao
Bác debug thì biết là nó lỗi ở đâu ngay. Đây là lỗi logic.
Nhưng mà mình chạy vẫn ra kết quả ngon lành mà nhỉ ?
Có khi nào test sai Nhập 3 cạnh không phải là ba cạnh tam giác :))
Ban sua lai kieu gia tri cua ham dien tich tam giac la double, s cung la kieu double, tai vi
sqrt()
tra ve double nen khi ep kieu tu double->float se khong chinh xacDùng double nhé.
(a+b+c) / 2.0;
Ép kiểu dữ liệu nha bạn. int chia int thì ra đáp án là int. Dù bạn có dùng float để hứng giá trị đó thì cũng không thay đổi được. Bạn có thể thay 2 thành 2.0 là được.