30/09/2018, 18:44

Mn ơi 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<<"...";
	
}
Đoàn Hiếu Tâm viết 20:59 ngày 30/09/2018

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<<"...";
	
}
Bi-Clever viết 20:49 ngày 30/09/2018

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

Đoàn Hiếu Tâm viết 20:48 ngày 30/09/2018

if(check=true)

Sai nè bạn

if(check==true)
Bi-Clever viết 20:51 ngày 30/09/2018

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

Đoàn Hiếu Tâm viết 20:50 ngày 30/09/2018

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

À mính biết rồi

kq=dientich(a,b,c);
nhap(a,b,c);
kiemtra(a,b,c);

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

Bi-Clever viết 20:53 ngày 30/09/2018

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

Bi-Clever viết 20:47 ngày 30/09/2018

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

Đoàn Hiếu Tâm viết 20:55 ngày 30/09/2018

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ị
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

Thử lại thế này:

nhap(a,b,c);
kq=dientich(a,b,c);
kiemtra(a,b,c);

Bi-Clever viết 21:00 ngày 30/09/2018

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

Đoàn Hiếu Tâm viết 20:54 ngày 30/09/2018

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

Bi-Clever viết 20:54 ngày 30/09/2018

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

Đoàn Hiếu Tâm viết 20:52 ngày 30/09/2018

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

Bi-Clever viết 20:53 ngày 30/09/2018

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

Bài liên quan
0