Cần giúp đỡ bài toán tính diện tích tam giác

Đề bài là tính chu vi và diện tích tam giác, mình chỉ thay đổi điều kiện ở cấu trúc if, nhưng sao 1 kiểu chạy được 1 kiểu không, ai biết giúp mình với.
Kiểu này thì chạy lỗi, khi mình nhập sai cạnh nó vẫn tính trong if mà ko nhảy qua else:

#include <iostream>
#include<math.h>
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	double a,b,c,cv,p,dt;
	cout<<"Nhap canh thu nhat:";
	cin>>a;
	cout<<"Nhap canh thu hai:";
	cin>>b;
	cout<<"Nhap canh thu ba:";
	cin>>c;
	if(a+b>c||a+c>b||b+c>a||a>0||b>0||c>0)
	{
		cv=a+b+c;
		p=(cv)/2;
		dt=sqrt(p*(p-a)*(p-b)*(p-c));
		cout<<"Chu vi cua tam giac la: "<<cv<<endl;
		cout<<"Dien tich cua tam giac la: "<<dt<<endl;
	}
	else
	{
		cout<<"Ban nhap sai kich thuoc tam giac!";	
	}
	return 0;
	
}

Còn đoạn này thì lại chạy đúng, mk chỉ để ngc điều kiện if thoi mà nó lại ko chạy đúng:

#include <iostream>
#include<math.h>
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	double a,b,c,cv,p,dt;
	cout<<"Nhap canh thu nhat:";
	cin>>a;
	cout<<"Nhap canh thu hai:";
	cin>>b;
	cout<<"Nhap canh thu ba:";
	cin>>c;
	if(a+b<c||a+c<b||b+c<a||a<=0||b<=0||c<=0)
	{
		cout<<"Ban nhap sai kich thuoc tam giac!";			
	}
	else
	{
		cv=a+b+c;
		p=(cv)/2;
		dt=sqrt(p*(p-a)*(p-b)*(p-c));
		cout<<"Chu vi cua tam giac la: "<<cv<<endl;
		cout<<"Dien tich cua tam giac la: "<<dt<<endl;		
	}
	
}

Áp dụng De Morgan :smiley: thì đoạn 1 sai.

Mà thỏa BĐT tam giác tức là 3 số dương rồi.

6 Likes

code sau đúng mà, bạn đó or các điều kiện mà.

and các điều kiện bạn nhé.

4 Likes

Các biểu thức điều kiện (dùng cho cả if, while) sẽ thực thi đến khi nào có kết quả sẽ dừng lại.
Nếu phép AND mà đủ điều kiện false nó sẽ dừng ngay lập tức và không thực hiện kiểm tra tiếp các biểu thức điều kiện khác.

Tương tự với phép OR sẽ dừng lại ngay nếu đủ điều kiện true.

Do vậy thứ tự biểu thức điều kiện khác nhau sẽ khác nhau.

6 Likes

thanks <3 <3
giờ tôi mới biết cái này, thanks thanks

1 Like

Cam on moi nguoi nhieu nha

Sao bạn ko để nhiều điều kiện, mà dồn lại một cái không chạy được

1 Like

Cái này nên chia đôi là hợp lí.

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