30/09/2018, 20:32

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

#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";
}
}
Itachi Citus viết 22:37 ngày 30/09/2018

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ả 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.

Bùi Trung Thông viết 22:34 ngày 30/09/2018

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

Son Hoang Kim viết 22:36 ngày 30/09/2018

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

Lưu Thành Vương viết 22:37 ngày 30/09/2018

Nhìn đúng là không hiểu thật
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

Lưu Thành Vương viết 22:39 ngày 30/09/2018

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;

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.

Bùi Trung Thông viết 22:41 ngày 30/09/2018

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;
}

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

Son Hoang Kim viết 22:39 ngày 30/09/2018

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

Bài liên quan
0