Kiểm tra 3 số a, b, c có tạo thành một tam giác không và loại của tam giác đó

Với a, b, c là các số thực được gán trong chương trình, kể cả số âm và dương. Hãy báo ra màn hình đây có phải là độ dài của 1 tam giác không, nếu có thì đó là của loại tam giác nào

Cho em hỏi thử bài này có đúng không @@~ em làm nhưng kh biết có ai giúp em chấm điểm @@ bro nào biết thì giúp em với, có sai thì sửa giúp em luôn @@

public class myDemo2 {
	public static void main(String[] args) {
		double a = 13.201, b = 16.124, c = 15.151;

		if ((a + b > c) || (a + c > b) || (b + c > a)) {
			System.out.println("Đây là tam giác !");
		}
		if ((a == b) || (b == c) || (c == a)) {
			System.out.println("Đây là tam giác cân !");
		} else if ((a == b) && (b == c) && (c == a)) {
			System.out.println("Đây là tam giác đều !");
		} else if ((a * a == b * b + c * c) || (b * b == a * a + c * c) || (c * c == b * b + a * a)) {
			System.out.println("Đây là tam giác vuông !");
		} else {
			System.out.println("Đây không phải tam giác");
		}
	}
}

Chương trình này sẽ không bao giờ phát hiện được tam giác đều.

Lỗi này không phải lỗi ngôn ngữ mà là lỗi thuật toán :stuck_out_tongue:
Thuật toán này chắc ngôn ngữ nào cũng dính :slight_smile:

1 Like

Nó có chạy được vào else if trong trường hợp a =b =c đâu bạn. Lỗi do người lập trình

1 Like

mình nghĩ bạn nên đặt chỗ điều kiện tam giác đều lên trên tam giác cân á

Bài này em làm sai rồi.
em phải gộp vào 2 trường hợp chính là có đúng tam giác hoặc không.
Sau đó mới tìm xem đó là tam giác gì

Cách làm:

if(Đúng là 3 cạnh tam giác) 
           -> if(3 cạnh bằng nhau) ? tam giác đều; 
              else if(2 cạnh bằng nhau) ? tam giác cân;
              else if(có 1 góc vuông) ? tam giác vuông;
              else if(3 cạnh không bằng nhau) ? tam giác thường; 
else(Không phải 3 cạnh tam giác) : Báo sai

Nếu không có ai chấm cho em, em hãy dựa vào đề bài tạo ra các bộ test cases để tự chấm cho chính mình. Cụ thể trong trường hợp này thì em có thể tìm các bộ test cases đạt các điều kiện sau:

  • Bộ chiều dài không phải tam giác.
  • Bộ chiều dài đáp ứng điều kiện là 3 cạnh của tam giác nhưng có số âm.
  • Bộ chiều dài tam giác: thường, cân, vuông cân, đều.

Bài của em thì lỗi logic rất nhiều, em cứ tạo test cases rồi thử. Em sẽ biết mình sai ở đâu rồi từ đó tự rút ra kinh nghiệm bản thân.

1 Like

^^ cảm ơn tất cả các anh đã nhiệt tình giúp em ^^, cảm ơn ạ :sweat_smile: :sweat_smile: em sẽ làm lại ^^

như này mới đúng chứ nhỉ

if((a + b) > c && (b + c) > a && (c + a) > b)
{
printf("\nDay la 1 tam giac);
}
  1. Đây là topic có tag ngôn ngữ java.

  2. Đào mộ có gì vui :thinking:

image

2 Likes

Còn tam giác vuông cân? :smiley:

3 Likes

Bạn này đào hay mà.

2 logic này hoàn toàn khác nhau nhưng mấy bạn trên không phát hiện ra.

Ngoài ra:

Là 2 khối logic if khác nhau. Do đó nó sẽ in ra 2 dòng kết quả cùng lúc.

Đây là tam giác !
Đây là tam giác cân !

Xét về mặt phát biểu thì không có gì sai. :v

4 Likes

ko hề có ý đó, mình tìm tài liệu thấy phần ktr 3 cạnh có phải là 1 tam giác hay không, thấy giải thuật có nhiều tài liệu họ ghi && or || nên không biết là cái nào ý

1 Like

&& nghĩa là “và”
|| nghĩa là “hoặc” :smiley:
sau đó bạn dò lại: độ dài ba cạnh tam giác phải thỏa mãn cả 3 bất đẳng thức :slight_smile:

3 Likes

bạn có biết làm như nào để đăng bài lên này ko ạ, tại mình mới biết đến trang này ý

1 Like

Đăng bài sao bạn?

Nếu đăng code lên thì dùng Markdown, để code trong ba dấu ‘`’.

// Sample code
#include <iostream>
using namespace std;

int main() {
    cout << "Hello C++\nThis is a very simple code.";
    return 0;
}
2 Likes

Ô thế hóa ra mình khen nhầm người à? :zipper_mouth_face:
:weary: :weary: :weary: :weary:

5 Likes

mình mới học nhập môn, tài liệu ghi dấu || còn thầy dạy && nên chưa hiểu rõ lắm hic

Cái này bạn nên đọc trong block if để biết kết luận của điều kiện đó, sau đó áp dụng De Morgan :smiley:

2 Likes

cho em hỏi làm sao để đăng bài lên này với ạ

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