30/09/2018, 17:22

Tìm khách hàng có số tiền nhỏ nhất?

Mình có đề tập như sau

Nhập thông tin của một khách hàng tại một cửa hàng thời trang gồm các thông tin sau: mã số khách hàng, họ và tên,tổng tiền

a.khai báo cấu trúc dữ liệu để quản lí được thông tin khach hàng đó tại công ty
b. Hãy xd hàm để tìm khách hàng có tổng tiền ít nhất trong danh sách khách hàng đã mua hàng tại cty đó.

Mình không biết làm câu b, đây là code hiện tại

#include<iostream>
#include<string>
using namespace std;
struct KHACHHANG
{
	string MKH;
	string HovaTen;
	unsigned int Tien;
};
void Nhap(KHACHHANG& kh)
{
	fflush(stdin);
	cout<<"
Moi ban nhap ma khach hang:";
	getline(cin,kh.MKH);
	cout<<"
 Moi ban nhap ho va ten:";
	getline(cin,kh.HovaTen);
	cout<<"Moi ban nhap so tien :";
	cin>>kh.Tien;
}
void Xuat(KHACHHANG kh)
{
	cout<<"
 Ma khach hang :";
	cout<<kh.MKH ;
	cout<<"
 Ho va ten khach hang :";
	cout<<kh.HovaTen ;
	cout<<"
 So tien :";
	cout<<kh.Tien ;
}
void NhapDSKH(KHACHHANG a[] ,int &n)
{
	for(int i=0 ; i<n; i++)
	{
		cout<<"Moi ban nhap khach hang thu"<<i+1;
		Nhap(a[i+1]);
	}
}
void XuatDSKH(KHACHHANG a[] ,int n)
{
	for(int i=0 ; i<n; i++)
	{
		cout<<"
 Thong tin khach hang thu :"<<i+1;
		Xuat(a[i+1]);
	}
}
struct QUANLIKHACHHANG
{
	KHACHHANG* list;
	int n;
};
KHACHHANG TimKHcotienMin(QUANLIKHACHHANG QLKH)
{
	KHACHHANG KHmin = QLKH.list[0];
	unsigned int Tien = QLKH.list[0].Tien;
	for(int i = 0; i<QLKH.n ;i++)
	{
		if(QLKH.list[i].Tien < Tien)
		{
			KHmin = QLKH.list[i];
			Tien = QLKH.list[i].Tien;
		}
	}
	return KHmin;
}
void main()

{
	KHACHHANG a[50] ;
	int n;
	QUANLIKHACHHANG qlkh;
	qlkh.list = NULL;
	qlkh.n = 0;
	do
	{
		cout<<"
 Moi ban nhap so luong khach hang :";
		cin>>n;
		if(n<0)
		{
			cout<<"
 Nhap sai yeu cau nhap lai !";
		}
	}while(n<0);
	NhapDSKH (a,n);
	XuatDSKH(a,n);
	KHACHHANG KHmin = TimKHcotienMin(qlkh);
				cout<<"
 khach hang co tien min la :"<<endl;
				Xuat(KHmin);
	system("pause");
}
Sáng Béo viết 19:27 ngày 30/09/2018

nhìn đau mắt quá, bạn post code như thế này đi:

```C++
//code ở đây
```

tiện thể bạn nói luôn lỗi hay sai như thế nào nhé.

Mai Anh Dũng viết 19:35 ngày 30/09/2018

Phải định nghĩa lỗi cụ thể mới dễ tìm @Hong_Hue à

Hồng Huệ viết 19:31 ngày 30/09/2018

bạn sửa giúp mình hàm tìm khách hàng có so tien min voi

Hồng Huệ viết 19:36 ngày 30/09/2018

a sua giup e.bài cho nhập vào danh sach khach hàng mua hàng trong công ty .và tim ra khách hàng có sô tiền mua là ít nhất ạ

Gã Độc Hành viết 19:34 ngày 30/09/2018

Bạn phải nói rõ lỗi của hàm TimKHcotienMin khi chạy nó như thế nào thì mới biết cách sửa chứ @@!

Mai Anh Dũng viết 19:23 ngày 30/09/2018

Vấn đề ở đây là mọi người không biết @Hong_Hue đang làm cái gì cả, không có đề bài, không biết @Hong_Hue muốn làm như thế nào để giải bài và cũng không biết @Hong_Hue đang bị lỗi gì cả.

Giống như @Hong_Hue tới gặp bác sĩ bảo là em bị bệnh, nhờ bác sĩ chữa nhưng không nói bị bệnh gì, dấu hiệu ra sao.

Hồng Huệ viết 19:35 ngày 30/09/2018

Em có đề như sau:

Nhập thông tin của một khách hàng tại một cửa hàng thời trang gồm các thông tin sau: mã số khách hàng, họ và tên,tổng tiền

a.khai báo cấu trúc dữ liệu để quản lí được thông tin khach hàng đó tại công ty
b. Hãy xd hàm để tìm khách hàng có tổng tiền ít nhất trong danh sách khách hàng đã mua hàng tại cty đó.

Mình không biết làm câu b, cảm ơn mọi người.

Mai Anh Dũng viết 19:24 ngày 30/09/2018

Hãy xd hàm để tìm khách hàng có tổng tiền ít nhất trong danh sách khách hàng đã mua hàng tại cty đó.

Với đề này thì em cần

  • một biến để lưu trữ số tiền, tien_nhonhat = 0, gán sẵn bằng 0
  • một biến để lưu trữ vị trí của khách hàng trong danh sách khách hàng, vitri_khachhang = 0, gán sẵn bằng 0
  • một vòng lặp, lặp qua toàn bộ danh sách khách hàng.
  • khi qua mỗi khách hàng, ta kiểm tra
  • nếu tien_nhonhat < Tien thì tien_nhonhat = Tien, vitri_khachhang = vị trí của khách hàng trong dánh sách này.

Khi hết vòng lặp ta sẽ có được vitri_khachhang có số tiền nhỏ nhất.

Phạm Văn Hoàng viết 19:28 ngày 30/09/2018

Em xin bổ sung
Trong trường hợp có nhiều người có cùng tổng tiền bé nhất thì có thể chạy thêm một vòng lặp nữa để quét hết.

Hồng Huệ viết 19:27 ngày 30/09/2018
KHACHHANG TimKHcotienMin(QUANLIKHACHHANG QLKH)
{
	KHACHHANG KHmin = QLKH.list[0];
	int Tien_min = 0;
	for(int i = 0; i<QLKH.n ;i++)
	{
		if(QLKH.list[i].Tien < Tien_min)
		{
			KHmin = QLKH.list[i];
			Tien = QLKH.list[i].Tien;
		}
	}
	return KHmin;
}

như vầy đúng ko a

Mai Anh Dũng viết 19:37 ngày 30/09/2018

Trông có vẻ ổn, làm thêm gợi ý của @hoangHEDSPI nữa nếu muốn xịn hơn

Trong trường hợp có nhiều người có cùng tổng tiền bé nhất thì có thể chạy thêm một vòng lặp nữa để quét hết.

Hồng Huệ viết 19:34 ngày 30/09/2018

giúp e vàong lặp for đó voi ạ

Mai Anh Dũng viết 19:39 ngày 30/09/2018

Không, em tạo thêm một vòng for mới để tìm.

Hồng Huệ viết 19:28 ngày 30/09/2018

e ko hieu cach tim a,hic ,

Mai Anh Dũng viết 19:38 ngày 30/09/2018

Trong trường hợp có nhiều người có cùng số tiền nhỏ nhất. Ta có thể dùng một vòng lặp duyệt qua danh sách khách hàng, và kiểm tra nếu khách hàng nào có số tiền bằng với số tiền nhỏ nhất thì ta in ra tên của họ.

Để làm được điều này thì ta cần phải tìm được số tiền nhỏ nhất trước đã. Thế nên ta phải làm một vòng lặp tìm số tiền nhỏ nhất và một vòng lặp tìm ra những khách hàng có số tiền nhỏ nhất.

Hoan Sò viết 19:38 ngày 30/09/2018

Sao e cấp phát cho list thì nó lại k chạy vòng lặp for tìm tiền min vậy

Bài liên quan
0