b
0,5 điểm
Xây dựng lớp người bao gồm các thuộc tính họ tên, ngày sinh và
định nghĩa hàm thành phần: hàm cho phép nhập thông tin cho
một người, hàm hiển thị thông tin của một người.
#include
#include
#include
#include
typedef struct date
{int ngay,thang,nam;};
class NGUOI
{ char hoten[30];
date ngaysinh;
public:
};
Xây dựng lớp sinh viên thừa kế từ lớp người có thêm thuộc tính
lớp, điểm trung bình và định nghĩa các hàm thành phần: hàm cho
phép nhập thông tin cho một sinh viên, hàm hiển thị thông tin của
một sinh viên ( với các thông tin họ tên, ngày sinh, lớp, điểm trung
bình), hàm kiểm tra xem sinh viên đó có được khen thưởng không.
0,25 điểm
class SINHVIEN:public NGUOI
{
char lop[30];
public:
float diemtb;
void nhapsv()
Trang:2/ 6
0,25 điểm
{
cout<<"lop:";gets(lop);
cout<<"diem trung binh:";
cin>>diemtb;
}
void hienthisv()
{
hienthi();
cout<<" "<8)
return 1;
else return 0;
}
c 0,5 điểm
0,25 điểm
0,25 điểm
};
Xây dựng lớp giáo viên thừa kế từ lớp người có thêm các thuộc
tính khoa, bộ môn, số bài báo và định nghĩa các hàm thành phần:
hàm cho phép nhập thông tin cho một giáo viên, hàm hiển thị
thông tin của một giáo viên (với các thông tin họ tên, ngày sinh,
khoa, bộ môn, số bài báo), hàm kiểm tra xem giáo viên đó có được
khen thưởng không.
class GIAOVIEN:public NGUOI
{
char khoa[30];
int sobaibao;
public: char bomon[30];
void nhapgv()
{
cout<<"khoa:";gets(khoa);
cout<<"bo mon:";gets(bomon);
cout<<"so bai bao";
cin>>sobaibao;
}
void hienthigv()
{
hienthi();
cout<<" "<=1)
return 1;
else return 0;
Trang:3/ 6
}
};
Viết hàm main thực hiện: d 2 điểm
- Nhập danh sách không quá 100 sinh viên và không quá 30 giáo
viên.
- Sắp xếp danh sách sinh viên giảm dần theo điểm trung bình
bằng phương pháp sắp xếp chèn trực tiếp và hiển thị kết quả
sắp xếp.
- Hiển thị ra màn hình danh sách sinh viên được khen thưởng.
- Hiển thị ra màn hình danh sách giáo viên thuộc bộ môn “Mang
may tinh” được khen thưởng.
Nhập danh sách không quá 100 sinh viên và không quá 30 giáo viên. 0,5 điểm
0,25 điểm
0,25 điểm
0,75 điểm
dssv[j+1]=dssv[j];
j--;
void main()
{ clrscr();
SINHVIEN dssv[100],tam;
GIAOVIEN dsgv[30];
int n,m,i,j;
cout<<"\nNhap vao so sinh vien:";
cin>>n;
for (i = 1; i <=n; i++)
{ cout <<"\nNhap thong tin cho sinh vien thu: " <>m;
for (i = 1; i <=m; i++)
{ cout <<"\nNhap thong tin cho giao vien thu: " <=1))
{
}
0,5 điểm
Trang:4/ 6
dssv[i].hienthisv();
cout<
dssv[j+1]=tam;
}
cout <<"\nDanh sach sinh vien sau khi da sap xep la:"<
dssv[i].hienthisv();
{
if(dssv[i].kiemtrakhenthuongsv()==1)
}
0,5 điểm
(strcmp(dsgv[i].bomon,"Mang may tinh")==0))
dsgv[i].hienthigv();
{
if((dsgv[i].kiemtrakhenthuonggv()==1)&&
}
cout<<"\nDanh sach cac sinh vien duoc khen thuong la:" <
a
0,5 điểm
- AB → E AB → BE (luật tăng) (2)
- BE→I (giả thuyết) (3)
- (2) và (3) AB → I (4)
- (1) và (4) AB → IG (luật hợp)
- GI→H (giả thuyết) nên GI → GH (luật tăng)
- AB → IG và GI → GH nên AB→GH
b
0,75 điểm
Hãy chứng minh phụ thuộc hàm AB→GH được suy dẫn từ F nhờ các
qui tắc suy dẫn của Armstrong
- AB → E và E→G (giả thuyết) AB → G (1)
Tìm bao đóng của {AB}
{AB}+ = {ABE} vì AB→E
= {ABEG} vì E→G
Trang:5/ 6
= {ABEGI} vì BE→I
= {ABEGIH} vì GI→H
Vậy {AB}+ = {ABEGIH}
Xác định 1 khóa của p c 0,75 điểm
Ta thấy B là thuộc tính chỉ xuất hiện ở vế trái.
Ta tính B+ = B ≠ U (B không phải là khóa của p)
(AB)+ = ABCDE (đã tính ở câu a). Nên AB là một khóa của p
II. Phần tự chọn, do trường biên soạn 3 điểm
1
2 Tổng cộng (I + II)
……….., Ngày…………Tháng………..Năm…………..
Trang:6/ 6