30/09/2018, 19:25

Cho mình hỏi lỗi gì với

#include<stdio.h>
#include<string.h>
#include<iostream>
#define max 100
using namespace std;
struct NV // kieu phan tu cua danh sach
{
	int manv;
	char hoten[20];
	int nsinh;
	float luong;
};
struct List //kieu danh sach
{
	NV a[max];
	int last;
};
void create(List &l)
{
	l.last==0;
}
int empty(List l)
{
	return l.last==0;
}
int full(List l)
{
	return l.last==max;
}
NV taonhanvien(int ma,char *ten,int ns,float Luong)
{
	NV nv;
	nv.manv=ma;
	strcpy(nv.hoten,ten);
	nv.nsinh=ns;
	nv.luong=Luong;
	return nv;
}
void add(List &l,NV nv)
{
	if(!full(l))
		{
			l.last++;
			l.a[l.last]=nv;
		}
}
void in(NV nv)
{
	cout<<endl<<nv.manv<<"-"<<nv.hoten<<"-"<<nv.nsinh<<"-"<<nv.luong;
}
void inds(List l)
{
	for(int i=1;i<=l.last;i++)
		in(l.a[i]);
}
void del(int k,List &l)
{
	for(int i=k;i<=l.last;i++)
		l.a[i]=l.a[i+1];
		l.last--;
}
void del_del(List &l)
{
	for(int i=1;i<=l.last;i++)
		if(l.a[i].manv==4)
			del(i,l);
}
main()
{
	List l;
	create(l);
	add(l,taonhanvien(1,"Viet Nguyen",1996,80.5));
	add(l,taonhanvien(2,"Khanh Linh",1996,5.5));
	add(l,taonhanvien(3,"Phuong Oanh",1996,7.5));
	add(l,taonhanvien(4,"Linh ro",1996,6.5));
	add(l,taonhanvien(5,"Oanh",1996,5.5));
	inds(l);
	del_del(l);
	inds(l);
}
Bi-Clever viết 21:27 ngày 30/09/2018

khi mình gọi số chẵn lần hàm add thì k in được,lẻ thì in. Lỗi gì kì vậy

Tuấn Nguyễn viết 21:28 ngày 30/09/2018

Hàm add bạn gán xong mới thực hiện ++ và sửa tất cả vòng lặp chạy từ 0 nhé. Chỉ số mảng bắt đầu từ 0

Bi-Clever viết 21:31 ngày 30/09/2018

Ơ mình khởi tạo để cho chỉ số mảng bđ từ 1 rồi mà

Bi-Clever viết 21:27 ngày 30/09/2018

void create(List &l)
{
l.last==0;
}

đây nè tuannguyen…

Pham Van Hai viết 21:35 ngày 30/09/2018

Mình nghĩ sai ở chỗ này, nếu khởi tạo cho biến là 0 thì phải dùng phép gán (=), chứ không phải so sánh bằng (==): l.last = 0.

void create(List &l)
{
l.last==0;
}

Bi-Clever viết 21:34 ngày 30/09/2018

A đúng chỗ đó rồi Hai

Bài liên quan
0