Code kiểm tra và tính diện tích tam giác bị sai

bài bảo nhập 3 cạnh rồi kiểm tra nếu là tam giác thì tính diện tích không thì thôi, bài này e sai chỗ nào ạ

#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
void nhap(float &a,float &b,float &c)
{
	cout<<"Nhap vao 3 canh: ";
	cin>>a>>b>>c;
}
void kiemtra(float &a,float &b,float &c)
{	
	bool check;
	if(a+b>c&&b+c>a&&a+c>b)
		{
			cout<<"3 canh vua nhap co the tao thanh tam giac.";
			check=true;
		}
	else
		{
			cout<<"3 canh vua nhap khong the tao thanh tam giac.";
			check=false;
		}
}
float dientich(float &a,float &b,float &c)
{
	float p,s;
	
	p=(a+b+c)/2;
	s=sqrt((p)*(p-a)*(p-b)*(p-c));
	return s;
}
main()
{
	float a,b,c,kq;
	bool check;
	kq=dientich(a,b,c);
	nhap(a,b,c);
	kiemtra(a,b,c);
	if(check=true)
		{
			cout<<endl<<"ket qua: "<<kq;
		}
	else
		cout<<endl<<"...";
	
}

Biến bool trong hàm void kiemtra(float &a,float &b,float &c); là một biến nội bộ trong scope của hàm thôi nên khi bạn gọi hàm trong hàm main, biến check trong hàm main của bạn sẽ ko thay đổi giá trị, bạn nên sửa lại là

bool kiemtra(float &a,float &b,float &c)
{	
	bool check;
	if(a+b>c&&b+c>a&&a+c>b)
		{
			cout<<"3 canh vua nhap co the tao thanh tam giac.";
			check=true;
		}
	else
		{
			cout<<"3 canh vua nhap khong the tao thanh tam giac.";
			check=false;
		}

return check;
}

main()
{
	float a,b,c,kq;
	bool check;
	kq=dientich(a,b,c);
	nhap(a,b,c);
	check = kiemtra(a,b,c);
	if(check=true)
		{
			cout<<endl<<"ket qua: "<<kq;
		}
	else
		cout<<endl<<"...";
	
}
2 Likes

sao khi mà check=false nó k in ra " . . . " nhỉ :sweat_smile:

Sai nè bạn

if(check==true)
2 Likes

bạn xem hộ mình là cái giá trị diện tích sao nó cứ là -0 thế

Bạn test với bộ test số bao nhiêu mà nó ra 0?

À mính biết rồi

Bạn chưa nhập mà gọi hàm tính kq rồi lấy gì nó tính

1 Like

mình test với 3,4,5,

mình có truyền tham chiếu cho hàm nhập rồi mà

Chương trình chạy từ trên xuống, lúc nó gọi hàm tính kết quá thì a b c chưa có giá trị :smiley:
Sau đó gọi hàm nhập thay đổi giá trị a,b,c nhưng còn ý nghĩa gì đâu? Biến kq có thay đổi theo đâu :wink:

Thử lại thế này:

2 Likes

Ahhh được rồi,mình cứ nghĩ là sau khi nhập thì nó cũng truyền giá trị vào cơ.tks bạn nha :sweat_smile:

Bạn nên học kỹ lại khái niệm tham chiếu nha. :smiley: và quy tắc chương trình chạy tư trên xuống nữa

2 Likes

ok bạn giờ đang học hay làm gì rồi

1 Like

Mình là sv năm 2, KHTN Tp HCM :smiley:

1 Like

vậy à,mình cũng năm 2 mà mình lơ mơ quá :relieved:

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