01/10/2018, 09:23
Tại sao hàm tìm theo mã và theo tên chạy cứ 1 người dù nhập dữ liệu khác nhau
#include <iostream>
#include <string>
using namespace std;
struct Nhanvien
{
int manv;
char hoten[30];
};
//prototype
//void Nhap(Nhanvien [], int);
//void Xuat(Nhanvien [], int);
//void SapXep(Nhanvien[], int);
//Nhanvien* TimTheoMa(Nhanvien[], int, int);
//Nhanvien* TimTheoTen(Nhanvien[], char[], int);
//code
void Nhap(Nhanvien snv[], int n)
{
int i;
for (i = 0; i < n; i++)
{
cout << "Nhap ma so nhan vien thu " << i + 1 << " : ";
cin >> snv[i].manv;
cin.ignore();
cout << "Nhap ten: " << endl;
cin.getline(snv[i].hoten, 30);
}
}
void Xuat(Nhanvien snv[], int n)
{
int i;
for (i = 0; i < n; i++)
cout << snv[i].manv << " " << snv[i].hoten << endl;
}
void SapXep(Nhanvien snv[], int n)
{
int i, j;
Nhanvien tmp;
for(i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
{
if (strcmp(snv[i].hoten, snv[j].hoten) > 0)
{
tmp = snv[i];
snv[i] = snv[j];
snv[j] = tmp;
}
}
}
Nhanvien* TimTheoMa(Nhanvien snv[], int maso, int n)
{
int i;
for (i = 0; i < n; i++)
{
if (maso == snv[i].manv)
{
return snv + i;
}
}
return NULL;
}
Nhanvien* TimTheoTen(Nhanvien snv[], char ten[], int n)
{
int i;
for (i = 0; i < n; i++)
{
if (strcmp(ten, snv[i].hoten) == 0)
{
return snv + i;
}
}
return NULL;
}
int main()
{
int n;
int maso;
char ten[30];
Nhanvien snv[30];
cout << "Nhap so nhan vien : ";
cin >> n;
fflush(stdin);
Nhap(snv, n);
Xuat(snv, n);
cout << "Danh sach sau khi sap xep : " << endl;
SapXep(snv, n);
Xuat(snv, n);
do {
cout << "Nhap ma can tim : ";
cin >> maso;
fflush(stdin);
TimTheoMa(snv, maso, n);
if (*TimTheoMa == NULL)
{
cout << "Khong co nhan vien ma nay !" << "Moi nhap lai !" << endl;
system("pause");
system("cls");
}
else cout << snv->manv << " " << snv->hoten << endl;
} while (*TimTheoMa == NULL);
do {
cout << "Nhap ten can tim : ";
cin.getline(ten, 30);
fflush(stdin);
TimTheoTen(snv, ten, n);
if (*TimTheoTen == NULL)
{
cout << "Khong co nhan vien ten nay !" << "Moi nhap lai !" << endl;
system("pause");
system("cls");
}
} while (*TimTheoTen == NULL);
cout << snv->manv << " " << snv->hoten << endl;
system("pause");
return 0;
}
Bài liên quan