Bai3.cpp
unknown
c_cpp
2 months ago
2.8 kB
5
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