01/10/2018, 00:14

Bài tập Tam giác - Chỉ làm đúng 6/7 bộ test! Giúp em với mấy sư phụ!

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 ạ!

Cường Nguyễn viết 02:20 ngày 01/10/2018
int kt_tg(int a, int b, int c){
if(a!=0 && b!=0 && c!=0){
return 1;
}else return 0;
}

đ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?

Huynh Nguyen viết 02:22 ngày 01/10/2018

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!

Nguyen Ca viết 02:20 ngày 01/10/2018

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

Huynh Nguyen viết 02:29 ngày 01/10/2018

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!

Bài liên quan
0