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");
}
Vũ Văn Việt viết 23:22 ngày 30/09/2018

Ko hiểu sai chạy n cứ ra 0

Vũ Văn Việt viết 23:19 ngày 30/09/2018

Có ai biết chỉ e với

*grab popcorn* viết 23:20 ngày 30/09/2018

Bạn sai cái gì nói rõ ra mọi người mới giúp đc chứ

Ngô Doãn Tuấn viết 23:19 ngày 30/09/2018

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é

Vũ Văn Việt viết 23:14 ngày 30/09/2018

Chạy nó cứ ra đáp án là 0,

Vũ Văn Việt viết 23:21 ngày 30/09/2018

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

Ngô Doãn Tuấn viết 23:14 ngày 30/09/2018

Kết quả mặc định là 0

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 :))

viết 23:18 ngày 30/09/2018

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

X viết 23:12 ngày 30/09/2018

Dùng double nhé.
(a+b+c) / 2.0;

Nguyễn Đức Anh viết 23:16 ngày 30/09/2018

É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.

Bài liên quan
0