Code bài tập kiểm tra loại tam giác chỉ đúng 6/7 bộ test

Chuyện là em có làm một bài test trên đây: http://coding.ut.edu.vn:1010/tam-giac-p5.html (Web tập code của trường em ạ! )
Và đoạn code của em đây:

#include "iostream"
using namespace std;

int kt_tg(int a, int b, int c){
	if(a!=0 && b!=0 && c!=0){
		return 1;
	}else return 0;
}

int main(){
	int x,y,z;
	cin >> x >> y >> z;
	if(kt_tg(x,y,z)){
		cout << "Yes" <<endl;
		if(x == y){
			if(y == z){
				cout <<"Equilateral";
			}else cout << "Isosceles";
		}else if(x == z){
			cout << "Isosceles";
		}else if(y == z){
			cout << "Isosceles";
		}else if(x*x == y*y + z*z || y*y == x*x + z*z || z*z == x*x + y*y){
			cout << "Right";
		}else cout << "Scalene";
	}else cout << "No";
	return 0;
}

Em đã suy nghĩ rất nhiều (Không phải bố em hút nhiều thuốc đâu ạ!) sửa đi sửa lại mà nó chỉ báo đúng 6/7 bộ test! Thật khó hiểu, có thể do em chưa tìm ra được trường hợp còn sót, hoặc sai chỗ nào đó, nhưng mò máy ngày nay vẫn chưa tìm được! Mong các sư phụ chỉ bảo! Em cám ơn nhiều ạ!

đoạn này có mùi đấy bạn ạ. Bạn thử tạo tam giác có a+b = c xem được ko? :grin:

Có nghĩa là… Ngoài trường hợp một trong các cạnh của tam giác bằng 0 thì kết quả trả về là false còn trường hợp khác nữa hả bạn!

điều kiện của 1 tam giác là: tổng 2 cạnh luôn lớn hơn cạnh còn lại, hiệu luôn nhỏ hơn cạnh còn lại.

1 Like

Em làm đc rồi các bác ạ, thiếu điều kiện tổng 2 cạnh > cạnh còn lại! Em cảm ơn các bác nhiều nhe!

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