Lỗi: Bài toán tính diện tích tam giác

.-. Các anh cho em hỏi. Em có bị sai chỗ nào không ạ? Em thử nhiều trường hợp vẫn thấy nó đúng. Mà lúc em nộp cho thầy thì thầy cho vài input thì nó bị sai ạ. (đề bài:Cho số đo 03 cạnh của một tam giác. Tính diện tích của tam giác đó với độ chính xác 15 chữ số (kể cả phần nguyên và phần thập phân).Nếu 03 số đó không phải số đo 03 cạnh của một tam giác thì xuất ra số 0.)

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main()
{
	double a, b, c;
	cin >> a >> b >> c;
	double t = (double)(a + b + c) / 2, kq;
	kq = (double)sqrt(t*(t - a)*(t - b)*(t - c));
	cout.precision(15);
	(a + b > c&&b + c > a&&a + c > b) ? cout << kq : cout << 0;
	return 0;
}

input sai là input như thế nào?

chắc thiếu cout << fixed?

2 Likes

bạn có check số âm chưa ?

 (a + b > c&&b + c > a&&a + c > b)

Đk này đảm bảo 1 tam giác chuẩn và không âm, vì chỉ có 1 số âm cũng không thỏa đk trên.

Cho 1 số âm vào thì hai bđt còn lại đá nhau ngay. Zero cũng vậy.
Nhưng thường check số âm để chỉ lỗi (nhập liệu) cho đúng.

1 Like

:3 mình dùng hàm làm tròn sai. Cảm ơn các bác nha, em biết lỗi rồi. Thầy em kêu dùng hàm làm tròn khác

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