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");
}

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ứ :smile:

1 Like

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á @@


#include<iostream>
#include<math.h>
using namespace std;
float dientich(float a, float b, float c)
{
    float p;
    float s;
    p=(a+b+c)/2;
    s=sqrt(p*(p-a)*(p-b)*(p-c));
    return (s);
    
}

int  main()
{ 
    float a,b,c;
    
    cout << "Nhap 3 canh cua tam giac.";
    
    cout << " \n Canh thu 1 ";
    cin >> a;
    
    cout << "\n Canh thu 2 ";
    cin >> b;
    
    cout << "\n Canh thu 3 ";
    cin >> c;
    
    cout<<" \n Dien tich hinh tam giac la: " << dientich(a,b,c);    
    return 0;
}

Mình thử trình bày như sau bạn xem có dễ đọc code hơn không nhé :smiley:

1 Like

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

:grimacing: 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 :joy: Nhập 3 cạnh không phải là ba cạnh tam giác :))

1 Like

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 xac

Dù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.

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