30/09/2018, 18:44

Code danh sách liên kết c++ sai hàm thamNien

Chào mọi người tình hình là e làm bài như sau

#include<iostream>
#include<string>
#define hienTai 2015
using namespace std;
struct NhanVien {
	char ten[50];
	int ms;
	string gioitinh;
	int namsinh;
	int namvaolam;
	NhanVien *next;
};
struct List {
	NhanVien *dau;
	NhanVien *cuoi;
};
void khoiTao(List &l)
{
	l.dau = l.cuoi = NULL;
}
NhanVien *taoNODE()
{
	NhanVien *nv = new NhanVien[1];
	cout << "Ten nhan vien : ";
	cin.ignore(1);
	cin.getline(nv->ten, 49);
	cout << "Ma so : ";
	cin >> nv->ms;
	cout << "Gioi tinh(nam/nu) : ";
	cin >> nv->gioitinh;
	cout << "Nam sinh : ";
	cin >> nv->namsinh;
	cout << "Nam lam viec : ";
	cin >> nv->namvaolam;
	nv->next = NULL;
	return nv;
}
void themDau(List &l, NhanVien *x)
{
	if (l.dau ==NULL)
	{
		l.dau = l.cuoi = x;
	}
	else
	{
		x->next = l.dau;
		l.dau = x;
	}
}
void hamXuat(List l)
{
	NhanVien *data;
	data = l.dau;
	if (data == NULL)
	{
		cout << "Khong co nhan vien nao trong danh sach !";
	}
	cout << "Ten nhan vien	" << "Ma so	" << "G.tinh	" << "N.sinh	" << "N.vaolam
";
	for (data = l.dau; data != NULL;data = data->next)
		{ 
			cout << data->ten << "	" << data->ms << "	" << data->gioitinh << "	" << data->namsinh <<"	" << data->namvaolam << endl;
		}
}
void thamNien(List &l)
{
	NhanVien *timkiem;
	timkiem = l.dau;
	int dem = 0;
	if (l.dau == NULL)
	{
		cout << "Danh sach trong !";
	}
	else
		while (timkiem !=NULL)
		{
			if (hienTai - (timkiem->namvaolam) >= 30) 
			{

				cout << timkiem->ten << "	" << timkiem->ms << "	" << timkiem->gioitinh << "	" << timkiem->namsinh << endl;
				timkiem = timkiem->next;
				dem++;
			}
			else if(dem==0)
			{
				cout << "Xin Loi,Khong co nhan vien nao :(";
			}
		}
}
int main()
{
	List SaoViet;
	khoiTao(SaoViet);
	int n;
	cout << "Nhap so luong nhan vien : ";
	cin >> n;
	for (int i = 0;i < n;i++)
	{
		themDau(SaoViet, taoNODE());
	}
	hamXuat(SaoViet);
	cout << "--------------------------Danh sach nhan vien tham nien tren 30 nam--------------------------
";
	cout << "Ten nhan vien" << "	" << "Ma so" << "	" << "G.tinh" << "	" << "N.sinh" << endl;
	thamNien(SaoViet);
	system("pause");
}

ở hàm thamNien(yêu cầu là hiện ra tất cả các nhân viên thâm niên 30 trở lên) nhưng mà khi em nhập nhân viên đầu tiên thả mãn điều kiên các nhân viên sau cũng thỏa mãn thì nó hiện ra.Còn khi nhập ví dụ 3 nhân viên nhân viên đầu thỏa mãn ,nhân viên 2 không thỏa mãn nhân viên 3 thỏa mãn thì nó chỉ hiện ra nhân viên 3 ,không có nhân viên 1.MN giúp e tìm lõi sai ạ

Nguyễn Hùng viết 20:51 ngày 30/09/2018

Dạ e mới sửa lại rồi mong ad xóa bài giúp e .Cám ơn mn nhiều
Có thể sửa code thành

void thamNien(List &l)
{
	NhanVien *timkiem;
	timkiem = l.dau;
	if (l.dau == NULL)
	{
		cout << "Danh sach trong !";
	}
	else
		for (timkiem = l.dau;timkiem != NULL;timkiem=timkiem->next)
		{
			if (hienTai - (timkiem->namvaolam) >= 30) 
			{

				cout << timkiem->ten << "\t" << timkiem->ms << "\t" << timkiem->gioitinh << "\t" << timkiem->namsinh << endl;
				//timkiem = timkiem->next;
			}
			else if(timkiem ==l.cuoi)
			{
				cout << "Xin Loi,Khong co nhan vien nao :(";
			}
		}
}
Bài liên quan
0