Chào mn ,tình hình là e viết 1 đoạn code chạy trên máy ở trường thì bình thường nhưng mang về máy e chạy nó bị ntn
ai biết lỗi gì không ạ
Chào mn ,tình hình là e viết 1 đoạn code chạy trên máy ở trường thì bình thường nhưng mang về máy e chạy nó bị ntn
Không có Code thì khó đoán bệnh lắm bạn ah.
đợi e tí e up code
#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\t" << "Ma so\t" << "G.tinh\t" << "N.sinh\t" << "N.vaolam\n";
for (data = l.dau; data != NULL;data = data->next)
{
cout << data->ten << "\t" << data->ms << "\t" << data->gioitinh << "\t" << data->namsinh <<"\t" << data->namvaolam << endl;
}
}
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;
}
else if(timkiem ==l.cuoi)
{
cout << "Xin Loi,Khong co nhan vien nao :(" << endl ;
}
}
}
void nghiHuu(List &l)
{
NhanVien *data;
data = l.dau;
if (l.dau == NULL)
{
cout << "Danh sach trong ! ";
}
else
for (data = l.dau;data != NULL;data=data->next)
{
if ((hienTai - data->namsinh > 59) && data->gioitinh == "nam" || (hienTai - data->namsinh > 54) && data->gioitinh == "nu")
{
cout << data->ten << "\t" << data->ms << "\t" << "\t" << data->namsinh << "\t" << data->namvaolam << endl;
}
else if (data==l.cuoi)
{
cout << "Xin Loi,Khong co nhan vien nao :(" << endl;
}
}
}
//
int Xoa(List &l)
{
int x;
cout << "Ban can xoa nhan vien co ms bao nhieu: ";
cin >> x;
NhanVien *lol;
lol = l.dau;
if (lol == NULL)
cout << "\nDanh sach rong! \n";
else
{
NhanVien *xoa;
if (lol->ms == x)
{
xoa = l.dau;
l.dau = l.dau->next;
delete xoa;
hamXuat(l);
return 0;
}
while (lol != NULL && lol->next->ms != x)
lol = lol->next;
if (lol != NULL)
{
xoa = lol->next;
lol->next = xoa->next;
delete xoa;
}
else
cout << "Khong tim thay";
}
cout << "Danh sach sau khi xoa:\n";
hamXuat(l);
}
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--------------------------\n";
cout << "Ten nhan vien" << "\t" << "Ma so" << "\t" << "G.tinh" << "\t" << "N.sinh" << endl;
thamNien(SaoViet);
cout << "---------------------------------------------------------------------------------------------\n";
cout << "---------------------------------Danh sach nhan vien nghi huu--------------------------------\n";
cout << "Ten nhan vien" << "\t" << "Ma so" << "\t" << "\t" << "N.sinh" << "\t" << "N.vaolam" << endl ;
nghiHuu(SaoViet);
cout << "---------------------------------------------------------------------------------------------\n";
cout << "------------------------------Danh sach nhan vien sau khi xoa--------------------------------\n";
Xoa(SaoViet);
system("pause");
}
ở hàm xóa e viết đến khi nhập mã số cần xóa nó ra lỗi trên
Bạn dùng sai lệnh delete
Bạn cấp phát 1 mảng gồm một phần tử
Nhưng lại dùng lệnh giải phóng giống kiểu khai bảo 1 biến bình thường, bạn chỉ có thể dùng lệnh bên dưới cho lệnh: NhanVien *nv = new NhanVien;
Trong chương trình của bạn thì phải dùng lệnh
delete[] xoa;
tks bạn nhiều nha !!!
nhưng vẫn không được
Trong hàm Xóa, xóa hết các lệnh [ delete xoa; ] đi và dùng 1 câu [delete xoa;] là câu lệnh nằm dưới cùng hàm xem sao ?
thử coi lại return đi b
Sáng nay e mang lên trường chạy thử thì ok .Điên quá mất.k hiểu lỗi tại sao máy e thì nó không chịu chạy
hàm trả về kiểu int mà bạn chỉ return trong 1 cái if . Coi lại đi bạn
Đây là code e đã sửa và nó chạy được trên trường mà về máy không có chạy
void Xoa(List &l) { if (l.cuoi == NULL) cout << "Danh sach rong!"; else { int ms; cout << "Ban muon xoa khoi ds sinh vien co ms la: "; cin >> ms; NhanVien *data, *x; data = l.dau; if (data->ms == ms) { l.dau = l.dau->next; delete data; cout << "Xoa nut thanh cong!"; } else { while (data != l.cuoi && data->next->ms != ms) data = data->next; if (data == l.cuoi) cout << "Khong co sinh vien nao co ms la " << ms; else { x = data->next; data->next = x->next; if (x == l.cuoi) l.cuoi = data; delete x; cout << "Xoa nut thanh cong!"; } } } }