30/09/2018, 16:10
Bài tập với câu lệnh rẽ nhánh : Xét 1 tam giác và kiểm tra là tam giác gì?
/*Nhập độ dài 3 cạnh và kiểm tra đó có phải là tam giác ko và nếu là tam giác thì đó là tam giác gì?*/
/*Phân tích : input là 3 cạnh của 1 tam giác, out put : kết luận đó có phải là tam giác và tam giác gì
Hướng giải : Kiến thức về tam giác! Điều kiện để 1 tam giác cần có.
Mình nói luôn : Chúng ta xét điều kiện lớn là đây có phải là 1 tam giác ko? Điều kiện để là 1 tam giác thì 2 cạnh bất kỳ trong 1 tam giác đó cộng lại phải lớn hơn cạnh còn lại
Sau đó ta xét các trường hợp : tam giác vuông, đều, vuông cân, thường,cân
Các bạn lưu ý 1 tam giác đều cũng đáp ứng đủ điều kiện là 1 tâm giác cân vì thế chúng ta sẽ xét trường hợp được xem trọng hơn. ví dụ tam giác vuông cân và tam giác cân thì ta phải đặt vuông cân lên trc.*/
#include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, char argv){
float canh_A, canh_B, canh_C; // input các cạnh của 1 tam giác
printf("Nhap canh a cua tam giac :");
cin >> canh_A;
printf("Nhap canh b cua tam giac :");
cin >> canh_B;
printf("Nhap canh c cua tam giac : ");
cin >> canh_C;
if ((canh_A + canh_B <= canh_C) || (canh_B + canh_C) <= canh_A || (canh_C + canh_A) <= canh_B)// điều kiện ko thoả của 1 tam giác
{
printf("Day khong phai la 1 tam giac!!!");
system("pause");
return 0;// ta sử dụng return để kết thúc chương trình nhanh chóng! khi gặp return chương trình sẽ kết thúc!
}
else // tam giác thường, vuông, cân, vuông cân, đều ta sẽ sắp xếp : Đều->vuông cân->cân->vuông->thường
{
if (canh_A == canh_B&&canh_B == canh_C) //đk tam giác đều
{
printf("Day la tam giac deu !!");
system("pause");
return 0;
}
else if (canh_A == canh_B || canh_B == canh_C || canh_C == canh_A) // đk tam giác cân ! *notice : trong tam giác cân có vuông cân, cân
{
if (canh_A*canh_A + canh_B*canh_B == canh_C*canh_C || canh_B*canh_B + canh_C*canh_C == canh_A*canh_A || canh_C*canh_C + canh_A*canh_A == canh_B*canh_B)//tam giác vuông cân
{
printf("Day la tam giac vuong can!!!");
system("pause");
return 0;
}
else{
printf("Day la tam giac can !!!");
system("pause");
return 0;
}
}
else if (canh_A*canh_A + canh_B*canh_B == canh_C*canh_C || canh_B*canh_B + canh_C*canh_C == canh_A*canh_A || canh_C*canh_C + canh_A*canh_A == canh_B*canh_B)// điều kiên tam giác vuông
{
printf("Day la tam giac vuong!!!");
system("pause");
return 0;
}
else{
printf("Day la tam giac thuong!!!");
system("pause");
return 0;
}
}
system("pause");
return 0;
}
Mọi người có thắc mắc cứ comment ở dưới mình sẽ giải thích
Bài liên quan
Ý tưởng của mình là tại sao không sort 3 cạnh a,b,c
a[3] là độ dài 3 cạnh:
sort(a,a+3);
là tam giác? a[0]+a[1]>a[2]
đều? a[0]==a[2]
cân? a[0]==a[1] or a[1]==a[2]
vuông? a[0] * a[0]+a[1] * a[1]==a[2] * a[2]
…
quên mất đây là bài hướng dẫn với câu lệnh rẽ nhánh if else tks ban
Mình nghĩ bình thường thì rẽ nhánh sẽ trông rất rối nên đưa ra ý tưởng đó
mình tính là hướng dẫn để mây bạn học căn bản cho dễ! chứ có thể tối ưu đc mà! dành cho ng mới thôi :v dùng để luyện if else
các bạn cứ post hết lên mình mới học nên căn bản cũng cần hết cám ơn các bạn đã đóng góp ^^
em viết code bằng codeblock thì ko cần cái dừng màn hình như getch, system(“pause”) nên toàn báo lỗi cứ phải xóa đi
đánh code ko cần dùng khoá nóng tập code cho lẹ, chuẩn. xài nhiều thì hiểu nhiều! căn bản là nâng cao mà! cái j cũng có giá chứ! nhìn code này ng mới nhìn là hiểu! code kiểu giải toán cho lẹ thì nhanh lắm
cho mình hỏi chút với hàm nhiều tham số vi dụ : lập 1 hàm tổng, hàm này có 2 tham số và mình muốn nhập 2 tham số bất kỳ từ màn hình để tính tổng có đc không hay nên dùng hàm đơn lẻ với mỗi biến thì hay hơn?
được chứ! nên làm như vậy! bạn mún chi tiết ko
Ok có chi tiết càng dễ hiểu
Bạn truyền tham số đầu vào bằng hàm main gọi hàm nhé
cảm ơn bạn Mộng Mít nhé ^^
ko có j! bài này bạn làm xong có thể dùng hàm dựn được đó! Gọi hàm thì sáng sủa, dễ hiểu và được cái là mình ko sợ lộn khi trong hàm main có quá nhiều thuật toán khác nhau tính các bài tập khác nhau
mình còn phải học nhiều lắm, có thể trao đổi riêng qua fb đc ko bạn, nhiều cái hỏi ít nên ngại lập topic
mình inbox cho bạn rrồi đó bạn hỏi khi nào mình onl mình giải đáp hết
Thử thay đổi code sao cho người dùng muốn kiểm tra tới khi nào chán thì thôi xem ^^
I moved 6 posts to a new topic: Fflush(stdin) dùng để làm gì?
I moved a post to an existing topic: Fflush(stdin) dùng để làm gì?
vấn đề nhỏ thôi: mình khuyên bạn khi xét tam giác bằng bất đẳng thức tam giác nên làm bằng dấu trừ (chuyển vế) để tránh tình trạng cặp số sau khi cộng vượt quá giới hạn cho phép.
cảm ơn bạn đã góp ý. mình tiếp thu. bài này là mình mới tiếp cận thôi. và cho người mới học tập làm à. chứ mình chưa có dùng bài này thực tế cảm ơn bạn nhiều nhé