Alo anh chị ơi!
Anh chị xem rồi chỉnh giúp em bài này với ạ.
Với yêu cầu của bài tập là : Liệt kê danh sách các công nhân viên theo tháng bất kỳ.
Em chưa xử lý được trường hợp nếu trong một tháng có >=2 công nhân.
Anh chị giúp em với ah.
Em cám ơn anh chị nhiều!

#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <iomanip>
using namespace std;
#define MAX 1000
#define LUONGGIO 15000
struct congnhan{
char ten[20];
int ma,thang;
float gio;
};
typedef congnhan CN;

void sapxep(CN[], int);
int tim(CN[], int, int);
int timth(CN[], int, int);

int main()
{
CN cn[MAX];
int scn, key, i=1;

cout << "Nhap so luong nhan vien (<=1000): ";
cin >> scn;
cout << endl;
//Nhap danh sach cong nhan
for (int i=0; i< scn; i++)
{
cout <<"Nhan vien thu "<<i+1<<endl;
cout << "Nhap thang lam viec: ";
cin >> cn[i].thang;
cout << "Nhap ten nhan vien: ";
cin >> cn[i].ten;
cout << "Nhap ma cua nhan vien: ";
cin >> cn[i].ma;
cout << "Nhap gio lam cua nhan vien: ";
cin >> cn[i].gio;
cout << endl;
}
cout << endl;
//Hien thi danh sach nhan vien
cout << "===DANH SACH NHAN VIEN===" << endl;

for (int i=0; i< scn; i++)
{
cout <<"Thang " << cn[i].thang;
cout <<"| Ma NV " << cn[i].ma;
cout <<"| Ten NV " << cn[i].ten;
cout <<"| So gio lam " << cn[i].gio;
cout <<"| Luong theo gio " << cn[i].gio * LUONGGIO;
cout << endl;
}
cout << endl;

// Tim kiem theo ma
cout << "Nhap ma cn can tim: ";
cin >> key;
int pos = tim(cn, scn, key);
if (pos != -1)
{
cout << "Phan tu can tim co trong mang.";
cout << " Va o vi tri " << pos +1 << endl;
cout << "Thang " << cn[pos].thang;
cout << "| Ma NV " << cn[pos].ma;
cout << "| Ten NV " << cn[pos].ten;
cout << "| So gio lam " << cn[pos].gio;
cout << "| Luong theo gio " << cn[pos].gio * LUONGGIO;
cout << endl;
}else
cout << "Khong co ma " << key << " trong mang." << endl;
cout << endl;

// Tim kiem theo thang
cout << "Nhap thang can tim: ";
cin >> key;
int dem = timth(cn, scn, key);
if (dem != -1)
{
cout << "Phan tu can tim co trong mang.";
cout << " Va o vi tri " << dem +1 << endl;
cout << "Thang " << cn[dem].thang;
cout << "| Ma NV " << cn[dem].ma;
cout << "| Ten NV " << cn[dem].ten;
cout << "| So gio lam " << cn[dem].gio;
cout << "| Luong theo gio " << cn[dem].gio * LUONGGIO;
cout << endl;
}else
cout << "Khong co thang " << key << " trong mang." << endl;
cout << endl;

//Hien thi danh sach sap xep luong tang dan
sapxep(cn, scn);
cout << "===DANH SACH SAP XEP LUONG TANG DAN===" << endl;
for (int i=0; i< scn; i++)
{
cout << "Thang " << cn[i].thang;
cout << "| Ma NV " << cn[i].ma;
cout << "| Ten NV " << cn[i].ten;
cout << "| So gio lam " << cn[i].gio;
cout << "| Luong theo gio " << cn[i].gio * LUONGGIO;
cout << endl;
}

_getch();
return 0;
}

void sapxep(CN cn[], int n)
{
int smallest;
for (int i=0; i< n-1; i++){
smallest = i;
for (int j=i+1; j<n; j++)
{
if (cn[smallest].gio*LUONGGIO > cn[j].gio*LUONGGIO)
smallest = j;
}
CN temp;
temp = cn[smallest];
cn[smallest]=cn[i];
cn[i]=temp;
}
}

int tim(CN cn[], int scn, int key)
{
for (int i=0; i<scn; i++)
if (cn[i].ma == key)
return i;
return -1;
}

int timth(CN cn[], int scn, int key)
{
for (int i=0; i<scn; i++)
{
if (cn[i].thang == key)
return i;
return -1;
}
}