30/09/2018, 19:51
[Ngôn ngữ C] - Cách viết code kiểm tra tam giác?
Xin chào các bạn, mình có viết 1 đoạn code C kiểm tra xem đó là tam giác gì nhưng nó có 1 khuyết điểm là không kiểm tra được tam giác cân nếu đã khai báo lệnh kiểm tra tam giác đều hoặc không kiểm tra được tam giác đều nếu đã khai báo lệnh kiểm tra tam giác cân. Các bạn giúp mình hoàn thiện nó nhé! Còn ai chưa biết thì có thể tham khảo!
P/S: Mình gọi ba cạnh tam giác lần lượt là " canha " ; " canhb " ; " huyen ". Dưới đây là code. ( có nhập vào bàn phím )
#include <stdio.h>
#include <stdlib.h>
main(){
int canha, huyen, canhb;
printf("Canh 1: ");
scanf("%d", &canha);
printf("Canh 2: ");
scanf("%d", &canhb);
printf("Canh huyen: ");
scanf("%d", &huyen);
if (canha*canha + canhb*canhb == huyen*huyen || canha*canha + huyen*huyen == canhb*canhb || canhb*canhb + huyen*huyen == canha*canha)
printf("Day la tam giac vuong
");
else if (canha == canhb || canha == huyen || huyen == canhb)
printf("Day la tam giac can
");
else
printf("Khong nhan dang duoc tam giac nay
");
getch();
}
Bài liên quan
Ít nhất tên biến của bạn có thể làm hiểu lầm: chỉ có tam giác vuông mới có cạnh huyền
Thứ nhất bạn nên kiểm tra 3 cạnh đó có phải của tam giác không đã. Điều kiện hình như là tổng 2 cạnh luôn lớn hơn cạnh còn lại.
Đây là bt cơ bản, có nhiều lời giải rồi. Mình xin đưa thuật toán của mình:
Khai báo ba cạnh c1, c2, c3
Sử dụng định lý dk can va đủ để 3 cạnh là cảnh của 1 tam giác là tổng 2 cạnh bất kỳ lớn hơn 2 cạnh còn lại
b1: Viết một hàm sắp xếp theo thứ thự ko giảm canh1, canh2, canh3. Như vậy ta có canh1 <= canh2 <= canh3
b2. Kiểm tra đk
If canh1 + canh2 < canh3 => ko phải tam giác
Else là tam giác, xét tiếp các đk đắc biệt (đều cân. Trường hợp vuông cân, vuông tự suy ra)
if canh1 = canh3 => tam giác đều
else if canh2 == canh1 || canh2 == canh => tam giác cân
else tam giác thường
Mình k cũng hiểu rõ lắm, bạn có thể viết thành 1 cái code cho dễ hiểu dc k?
if (canha == canhb || canha == huyen || huyen == canhb)
if(canha == canhb && canhb == huyen)
//tam giác đều
else
//tam giác cân
Nên viết thành từng hàm cho dễ nhìn. Ví dụ hàm kiểm tra tam giác cân: laTamGiacCan(), hàm kiểm tra tam giac vuông laTamGiacVuong(), hàm kiem tra tam giác laTamGIac(). Nếu không phải là tam giác thì không phải kiểm tra là vuông hay cân nữa.
À, mà chứng minh tam giác cân và đều mình biết rồi nhưng lm sao để viết code kiểm tra xem có phải tam giác hay k ý!
float a,b,c;
if(a+b>c && a+c>b && b+c>a)
//là tam giác
else
// k phải tam giác
AK, cho mình hỏi kí tự " && " là gì thế? Nó có giống " || " không?
&& là “và” còn || là “hoặc”
Kiểm tra 3 cạnh có tạo được tam giác không đã
Sau đó mới kiểm tra từng điều kiện cấu tạo thành tam giác, điều kiện thế nào thì bạn chịu khó google
Nên tự tìm hiểu trước khi hỏi
Theo mình nghĩ là như này:
If canh1 + canh2 <= canh3 => ko phải tam giác
Đồng ý với bạn, thank