You are on page 1of 3

ĐẠI HỌC QUỐC GIA HÀ NỘI CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Độc lập - Tự do - Hạnh phúc

ĐỀ THI CUỐI KỲ II NĂM HỌC 2018 - 2019


Môn: Tin học cơ sở 4
ĐỀ 1
Thời gian: 90 phút

Họ và tên:..................................................... Mã sinh viên:................................

Bài 1 (6 test)Một công ty cho thuê ô tô có phần mềm quản lý xe gồm 4 class:
Car.java, ServiceCar.java, SportCar.java và CarManagement.java
• Lớp Car.java (xe) với các thuộc tính String id (mã xe), String name (tên
xe), String manufacturer (nhà sản xuất), double hours (số giờ thuê) double
price (đơn giá thuê 1 giờ), double amount (thành tiền).
• Lớp ServiceCar.java (xe dịch vụ) kế thừa từ lớp Car, ngoài ra có thêm
thuộc tính là double fee (phí dịch vụ).
• Lớp SportCar.java (xe thể thao) kế thừa từ lớp Car có thêm thuộc tính
là double tax (thuế tính theo %)
Hoàn thiện các phương thức sau:
• (2 test) Phương thức getAmount() ở lớp ServiceCar.java và SportCar.java.
Trong đó:
– Đối với xe dịch vụ (ServiceCar) thì thành tiền = đơn giá thuê 1 giờ *
số giờ thuê + phí dịch vụ
– Đối với xe thể thao (SportCar) thì thành tiền = đơn giá thuê 1 giờ *
số giờ thuê + (đơn giá thuê 1 giờ * số giờ thuê) * thuế/100.0 ;
• (1 test) Phương thức findCars (ArrayList<Car> cars, String manuName)
của lớp CarManagement.java để xuất ra những xe có tên nhà sản xuất là
manuName.
• (2 test) Phương thức getMaxAmount (ArrayList<Car> cars, String type-
OfCars) của lớp CarManagement để trả về danh sách các xe có giá thuê
thành tiền cao nhất thuộc loại typeOfCars (typeOfCars có thể là xe dịch
vụ, hoặc xe thể thao).
• (1 test) Phương thức sortByAmount(ArrayList<Car> cars) của lớp Car-
Management để sắp xếp thành tiền (amount) các loại xe theo thứ tự giảm
dần.

1
Bài 2 (4 test) Cho trước tệp MaxBitonic.java. Thực hiện các yêu cầu sau:
• (2 test) Hoàn thiện phương thức int[] readData(String fileName) cho phép
đọc dữ liệu đầu vào từ tệp fileName và trả về mảng số nguyên chứa dữ
liệu đọc được. Dữ liệu trong tệp được cho như sau:
– Dòng đầu tiên là số nguyên dương n, biểu diễn số lượng phần tử của
mảng
– Dòng tiếp theo là n số nguyên, biểu diễn các giá trị của mảng số, hai
số cách nhau một dấu cách.
• (2 test) Hoàn thiện phương thức boolean isBitonicSequence(int[] array)
cho phép kiểm tra xem dãy số nguyên vừa đọc từ tệp có phải dãy đơn
mốt hay không?
Chú thích: Một mảng a[0, 1, ...(n − 1)] có n phần tử được gọi là đơn mốt nếu
nó chứa một dãy tăng dần, ngay sau đó là một dãy giảm dần. Cụ thể là, có
một vị trí m ∈ {0, 1, ..., (n − 1)} sao cho:
• a[i] > a[i − 1], ∀i, 0 < i ≤ m, và
• a[i] > a[i + 1], ∀i, m ≤ i < (n − 1).

Nói cách khác, a[m] là phần tử lớn nhất, và là phần tử "cực đại cục bộ " duy
nhất được bao quanh bởi các phần tử nhỏ hơn (a[m − 1] và a[m + 1]).

Ví dụ:
• a = {1, 3, 5, 7, 9, 8, 6, 4, 2} : là dãy đơn mốt với m = 4
• a = {1, 5, 9, 7, 3, 2, 4, 6, 8} : không là dãy đơn mốt
• a = {1, 3, 5, 7, 10, 10, 6, 4, 2} : không là dãy đơn mốt
• a = {1, 2, 3, 4, 5, 6, 7, 8, 9} : là dãy đơn mốt với m = 8
• a = {9, 8, 7, 6, 5, 4, 3, 2, 1} : là dãy đơn mốt với m = 0

2
Chú ý
• Bạn cần đặt tên lớp, tên hàm theo đúng mẫu yêu cầu (chữ viết hoa/thường,
kiểu tham số) nếu không chương trình chấm bài tự động sẽ không tìm thấy
hàm của bạn.
• Chương trình cần không có lỗi cú pháp để có thể biên dịch được và chạy được
trên test mẫu. Khi nộp bài, bạn có thể tự đánh giá kết quả mình chạy test
mẫu hoặc viết hàm tự kiểm tra thêm các test mà các bạn sinh ra. Trên test
mẫu, các lỗi hoặc kết quả sai sẽ được thông báo. Bài không chạy được trên
test mẫu sẽ được 0 điểm.
• Chương trình của bạn sẽ được đánh giá trên bộ test khác với test mẫu và
công bố điểm sau.
• Bạn được quyền thêm các chi tiết khác (hàm, trường dữ liệu, ...) nếu cần
thiết.
• Tổng số test hai bài là 10. Điểm của bạn được tính theo số test đúng không
phân biệt bài như sau:

Số test đúng 1 2 3 4 5 6 7 8 9 10
Điểm 2.0 4.0 5.0 6.0 7.0 8.0 8.5 9.0 9.5 10.0

You might also like