Chương trình này sai ở đâu?

Các bác giúp e tìm lỗi của chương trình này với. Hiện tại nó k chạy trường hợp " co khach hang khong the phuc vu".
Đề bài là cho vị trí các trạm và khách, khoảng cách tối thiểu giữa khách hàng và trạm. Nếu có khoảng cách giữa khách hàng và trạm nào đó lơn hơn khoảng cách tối thiểu thì in ra " co khach hang khong the phuc vu" và thoát chương trình.
E cảm ơn trước :smiley:

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

	struct KHACH
	{
		int x;
		int y;
		int yeu_cau;
		int dich_vu;
		
	};
	
	struct TRAM
	{
	int x;
	int y;
	int kha_nang_chua;
	};
	
	int khoang_cach(int x, int y, int z, int t)
{
	float d;
	 d=(float)sqrt( (x-z)*(x-z) + (y-t)*(y-t) );
     return d;
}
	
int main()
{
	int n,m,i,j,khoang_cach_toi_thieu;
	KHACH K[1000];
	TRAM T[1000];

	cout<<"nhap n,m,khoang_cach_toi_thieu";
	cin >>n>> m>> khoang_cach_toi_thieu;	
	for(i=1;i<=n;i++)
	{
		cout<<"nhap x, y, yeu_cau, dich_vu";
		cin>> K[i].x>>K[i].y>>K[i].yeu_cau>>K[i].dich_vu;
	}
	for(j=1;j<=m;j++)
	{
		cout<<"nhap x, y, kha_nang_chua";
		cin>>T[j].x>>T[j].y>>T[j].kha_nang_chua;

	for (i=1;i<=n;i++)
	{
		for (j=1;j<=m;j++)
			{
				if (khoang_cach(K[i].x,K[i].y,T[j].x,T[j].y)< khoang_cach_toi_thieu) 
				{
					K[i].dich_vu=0;
					return 0;
				}
				else 
				K[i].dich_vu=-1;
				
				
			}	
	}
	if (K[i].dich_vu==-1) 
		{
			cout<<"co khach ma tram khong the phuc vu";
			exit;
		}
	else cout<<"co the phuc vu tat ca cac khach";
}
}

Bạn nên xem coding convention của C trước đã, mình không hiểu code bạn viết gì cả :sweat_smile: http://www.slideshare.net/hoangnguyencong/phong-cch-lp-trnh-ng-bnh-phng
Đặt tên struct bạn chỉ nên viết hoa ký tự đầu tiên của mỗi từ trong struct thôi, ví dụ: KhachHang; đặt tên biến, hàm tuyệt đối hạn chế viết tắt x,y, m,n,d k, kc, yc… Ngoại trừ những từ viết tắt quá phổ biến như i - index, n - number.

2 Likes

quả là hơi thách thức vì mình đọc không hiểu :smile:

Mình vừa sửa lại rồi bạn xem giờ đã dễ hiểu hơn chưa :slight_smile:

Nhìn đúng là không hiểu thật :sweat_smile:
Hàm khoang_cach thiếu return
Không hiểu lắm cái khoang_cach_toi_thieu chưa khai báo mà lại cin
Trước tiên là z :joy:

Không hiểu lắm tại sao lại return 0; làm vậy chương trình nó ngừng rồi không thực hiện tới dòng if được.

nếu trường hợp này đúng thì chương trình đã return, tức đã dừng luôn rồi trước khi kiểm tra lệnh if tiếp theo, để lệnh return xuống cuối cùng chương trình đi bạn :slight_smile:

Cảm ơn các bạn, mình đã biết mình sai ở đâu rồi :smiley:

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