Thắc mắc khai báo thông tin nhân viên
VCT quản lý nhân viên. Cho phép nhập số nv cần quản lý. Nhập chi tiết từng nv.
Thông tin chi tiết về nv như sau: maso, hoten, namsinh, luong.
-
Xuất thông tin về nhân viên vừa nhập ra màn hình
-
Xuất thông tin về nv theo thứ tự giảm dần của lương.
phần xuất thông tin về nhân viên theo thứ tự giảm dần của lương ( thong tin gom co MS , HT ,NS , luong ) thì sau khi triển khai thuật toán buble sort xong rồi e chỉ xuất ra được thứ tự lương giảm dần , còn thông tin nhân viên đó e phải khai báo như thế nào ạ
Bạn sử dụng
struct
nhé, ở đây mình nhập thông tin 10 nhân viên.e có sử dụng struct ạ , nhưng nếu xuất e chỉ xuất ra đc phần lương giảm dần còn thông tin còn lại (mã số , tên , năm sinh ) thì e hơi bối rối về thuật toán
void bublesort(QLNV SNV[],int n)
{
for (int i=0;i<n;i++)
{
for (int j=n-1;j>i;j–)
{
if (SNV[j].luong > SNV[j-1].luong)
{
int temp=SNV[j-1].luong;
SNV[j-1].luong=SNV[j].luong;
SNV[j].luong=temp;
}
}
}
}
Xuất thông tin thì bạn làm như sau:
dạ e có xuất nhân viên ở trên r , mà ở câu 2 nó yc xuất nv theo thứ tự giảm dần của lương ý a
#include <stdio.h>
struct QLNV{
int MS,NS,luong;
char ten[40];
};
void nhapNV(QLNV SNV[],int &n)
{
printf (“Nhap so nv can quan li :”);
scanf ("%d",&n);
for (int i=0;i<n;i++)
{
printf ("\n\nnhap thong tin nv thu %d :\n",i+1);
printf (“Nhap MS :”);
scanf ("%d",&SNV[i].MS);
fflush(stdin);
printf (“Nhap ten nhan vien :”);
gets(SNV[i].ten);
printf (“Nhap nam sinh :”);
scanf ("%d",&SNV[i].NS);
printf (“Nhap luong :”);
scanf ("%d",&SNV[i].luong);
}
}
void xuatNV(QLNV SNV[],int n)
{
printf ("\n\nthong tin cac Nv la :\n");
for (int i=0;i<n;i++)
{
printf ("\nNhan vien thu %d \n",i+1);
printf (“MS NV : %d\n”,SNV[i].MS);
printf (“Ten nv :%s\n”,SNV[i].ten);
printf (“Nam sinh : %d\n”,SNV[i].NS);
printf (“Luong :%d\n”,SNV[i].luong);
}
}
void bublesort(QLNV SNV[],int n)
{
for (int i=0;i<n;i++)
{
for (int j=n-1;j>i;j–)
{
if (SNV[j].luong > SNV[j-1].luong)
{
int temp=SNV[j-1].luong;
SNV[j-1].luong=SNV[j].luong;
SNV[j].luong=temp;
}
}
}
}
int main()
{
QLNV SNV[100];
int n;
nhapNV(SNV,n);
xuatNV(SNV,n);
bublesort(SNV,n);
}
code thật bá đạo, gán property của đối tượng này cho đối tượng khác,
k bảo toàn được dữ liệu rồi.
Sửa thành
mà a ơi , nếu code như v thì làm sao để sắp sếp lương theo thứ thự giảm dần
Nếu vậy thì theo mình:
So sánh lương, nếu thỏa thì swap cả 2 đối tượng -> thế là xong
Được mà bạn, thay đổi vị trí của nhân viên trong list dựa theo thứ tự lương giảm dần. Chứ sắp xếp theo kiểu của bạn sẽ phát sinh ra vấn đề: giả sử NV(Nhân viên) A: 2(lương), NVB: 1, NV C: 3, sau khi sắp xếp theo kiểu [quote=“qloved, post:6, topic:38220”]
int temp=SNV[j-1].luong;
SNV[j-1].luong=SNV[j].luong;
SNV[j].luong=temp;
[/quote]
thì NV A: 3, NV B: 2, NV C: 1 -> vậy thì sai dữ liệu rồi
e cảm ơn anh nhiều nha
e cảm ơn a nhiều nha