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();
}
Gió viết 21:56 ngày 30/09/2018

Í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

Nghĩa Kira viết 21:59 ngày 30/09/2018

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.

Harry viết 21:53 ngày 30/09/2018

Đâ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

Người bí ẩn viết 21:56 ngày 30/09/2018

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?

dihocke viết 22:01 ngày 30/09/2018

if (canha == canhb || canha == huyen || huyen == canhb)

if (canha == canhb || canha == huyen || huyen == canhb)
if(canha == canhb && canhb == huyen)
//tam giác đều
else
//tam giác cân

Thư Đoàn viết 22:04 ngày 30/09/2018

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.

Người bí ẩn viết 22:06 ngày 30/09/2018

À, 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 ý!

dihocke viết 22:01 ngày 30/09/2018

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

Người bí ẩn viết 21:59 ngày 30/09/2018

AK, cho mình hỏi kí tự " && " là gì thế? Nó có giống " || " không?

Chung viết 21:58 ngày 30/09/2018

&& là “và” còn || là “hoặc”

Hồ Sỹ Kiên viết 21:55 ngày 30/09/2018

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

Nghĩa Kira viết 22:02 ngày 30/09/2018

If canh1 + canh2 < canh3 => ko phải tam giác

Theo mình nghĩ là như này:
If canh1 + canh2 <= canh3 => ko phải tam giác

Harry viết 21:58 ngày 30/09/2018

Đồng ý với bạn, thank

Bài liên quan
0