Bai3.cpp
unknown
c_cpp
10 months ago
2.8 kB
7
Indexable
#include <iostream>
using namespace std;
struct SinhVien
{
string hoTen;
string gioiTinh;
int namSinh;
float diemTK;
};
int timKiemTuanTu(SinhVien arr[], int n, string hoTen, float diemTK) {
for (int i = 0; i < n; i++) {
if (arr[i].hoTen == hoTen && arr[i].diemTK == diemTK) {
return i;
}
}
return -1;
}
int timKiemNhiPhan(SinhVien arr[], int n, float x)
{
int m, l = 0, r = n-1;
while (l <= r) {
m = (l + r) / 2;
if (arr[m].diemTK == x) {
return m;
}
else if (arr[m].diemTK < x) {
l = m + 1;
}
else {
r = m - 1;
}
}
return -1;
}
void sapXep(SinhVien arr[], int n)
{
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
if (arr[i].diemTK > arr[j].diemTK) {
SinhVien tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
main()
{
int n = 6;
SinhVien arr[] = {
{"Nguyen Van A", "Nam", 2003, 9.5},
{"Nguyen Van B", "Nam", 2003, 10},
{"Nguyen Thi C", "Nu", 2002, 8},
{"Nguyen Van D", "Nam", 2002, 9},
{"Nguyen Thi E", "Nu", 2003, 8.5},
{"Nguyen Thi F", "Nu", 2002, 9},
};
int chon;
cout << "Nhap lua chon: \n";
cout << "1. Tim kiem tuan tu 2. Tim kiem nhi phan\n";
cin >> chon;
switch(chon)
{
case 1:
{
string hoTen;
cout << "Nhap ho ten can tim: "; cin.ignore(); getline(cin, hoTen);
float diemTK;
cout << "Nhap diemTK can tim: "; cin >> diemTK;
int kq = timKiemTuanTu(arr, n, hoTen, diemTK);
if (kq == -1) {
cout << "Khong co sinh vien trong day\n";
}
else {
cout << "Co sinh vien trong day\n";
}
break;
}
case 2:
{
float diemTK;
cout << "Nhap diem TK can tim: "; cin >> diemTK;
// Sap xep truoc khi tim kiem
sapXep(arr, n);
int kp = timKiemNhiPhan(arr, n, diemTK);
if (kp == -1) {
cout << "Khong co sinh vien trong day\n";
}
else {
cout << "Sinh vien can tim la: \n";
cout << "Ho ten: "<< arr[kp].hoTen << endl;
cout << "Gioi tinh: " << arr[kp].gioiTinh << endl;
cout << "Nam sinh: " << arr[kp].namSinh << endl;
cout << "Diem TK: " << arr[kp].diemTK << endl;
}
}
break;
default:
cout << "Vui long nhap lai\n";
}
}
Editor is loading...
Leave a Comment