
Đề thi Lập trình Hướng đối tượng
Số câu hỏi: 3 câuSố mã đề: 1 đềThời gian: 2 giờ
217 lượt xem 5 lượt làm bài
Xem trước nội dung:
Máy lọc ly tâm là một loại máy lọc nước hoạt động bằng xăng. Người ta thuê máy sử dụng với đơn giá thuê 50.000 đồng/h. Mỗi máy lọc ly tâm có công suất lọc (m3/h) và tốc độ hao xăng (lít/h) khác nhau nhưng không đổi trong suốt thời gian hoạt động (h) của máy. Đơn giá xăng là 20.000 đồng/lít.
#include <iostream>
using namespace std;
class MayLoc {
private:
float m_tgian;
protected:
virtual float congSuat();
void setTgian(float t);
public:
MayLoc();
float tinhLuongNuoc();
};
MayLoc::MayLoc() {
this->m_tgian = 0;
}
void MayLoc::setTgian(float t) {
this->m_tgian = t;
}
float MayLoc::tinhLuongNuoc() {
return congSuat() * m_tgian;
}
float MayLoc::congSuat() {
return 0;
}
class MayLyTam: public MayLoc {
private:
float m_cs;
protected:
float congSuat();
public:
MayLyTam(float cs, float t);
};
MayLyTam::MayLyTam(float cs, float t) {
this->m_cs = cs;
this->m_tgian = t; /*1*/
}
float MayLoc::congSuat() {
return this->cs;
}
void main() {
MayLoc *pm = new MayLoc();
if (pm->congSuat() < 5) /*2*/
{
MayLyTam ml(81.9, 10);
pm = &ml; /*3*/
cout << "Luong nuoc = " << pm->tinhLuongNuoc();
}
delete pm; /*4*/
}
a) Hãy cho biết trong hàm main(), có những constructor (phương thức khởi tạo/thiết lập) và destructor (phương thức hủy) nào được gọi, ở những dòng nào?
b) Hãy cho biết các dòng có chú thích từ /*1*/ đến /*4*/ có những lỗi (cú pháp, thực thi) gì?
c) Hãy sửa lại dòng /*1*/ cho hết lỗi mà vẫn thực hiện được việc cập nhật tgian.
d) Nếu xoá đi dòng /*2*/ (cho hết lỗi) rồi chạy chương trình, kết quả xuất ra màn hình là gì?
e) Hãy dời vị trí dòng /*4*/ sao cho đối tượng đã tạo bằng toán tử new được giải phóng bộ nhớ một cách an toàn (chỉ dời dòng, không sửa nội dung).
Máy lọc xúc tác là một loại máy lọc nước hoạt động bằng hóa chất. Người ta thuê máy với đơn giá thuê 80.000 đồng/h. Mỗi máy có công suất lọc (m3/h) khác nhau. Để lọc nước, ta cho một lượng hóa chất (g) vào từ đầu và sử dụng trong suốt thời gian sử dụng (h) của máy. Công suất lọc thực tế được tính theo hai trường hợp như sau:
- công suất lọc * (lượng hóa chất / 100g) nếu thời gian sử dụng < 10h, hoặc
- công suất lọc * (lượng hóa chất / 100g) / (thời gian hoạt động / 10h) nếu thời gian hoạt động ≥ 10h.
Lượng nước mỗi máy lọc được = công suất lọc thực tế * thời gian hoạt động.
Chi phí thuê mỗi máy = đơn giá thuê * thời gian hoạt động.
Chi phí sử dụng máy = chi phí thuê + chi phí nhiên/vật liệu (đơn giá hóa chất là 10.000 đồng/g).
Hãy cài đặt lớp đối tượng cần thiết với thuộc tính và phương thức vừa đủ để đoạn chương trình sau có thể hoạt động được theo đúng những gì đã mô tả.
#include <iostream>
using namespace std;
void main() {
cout << "Don gia hoa chat: " << MayXucTac::DON_GIA_HOA_CHAT << endl;
MayXucTac m;
m.nhap(); // Nhập thông tin sử dụng của máy xúc tác này
cout << "Chi phi su dung may: " << m.tinhChiPhi() << endl;
cout << "Luong nuoc loc duoc: " << m.tinhLuongNuoc() << endl;
}
Một cái ao chứa M mét khối (m3) nước. Để lọc nước trong ao, người ta thuê N máy lọc (vừa xúc tác vừa ly tâm) để sử dụng. Thông tin các loại máy lọc và các công thức tính như đã được mô tả ở các câu 1 và 2 bên trên.
Bảng tóm tắt thông tin các loại máy lọc:
Loại máy | Đơn giá thuê | Công suất lọc | Chi phí nhiên/vật liệu |
---|---|---|---|
Máy ly tâm | 50.000 đồng/h | Không đổi | Lượng xăng * 20.000 |
Máy xúc tác | 80.000 đồng/h | Thay đổi theo lượng hóa chất và thời gian sử dụng hóa chất | Lượng hóa chất * 10.000 |
a. Vẽ sơ đồ lớp thiết kế chương trình có tính tái sử dụng (reuse) và khả năng mở rộng (scalable).
b. Xây dựng chương trình cho phép:
- Nhập vào danh sách N máy lọc (với đầy đủ thông tin sử dụng).
- Nhập vào lượng nước M (số m3) trong ao. Chương trình cho biết với số máy lọc được sử dụng, ao có được lọc hết hay không, và tính tổng chi phí sử dụng các máy lọc.
Đề thi tương tự
6 mã đề 231 câu hỏi 1 giờ
71,148 xem5,464 thi
1 mã đề 52 câu hỏi 1 giờ
18,670 xem1,428 thi
1 mã đề 32 câu hỏi 1 giờ
13,237 xem1,011 thi
3 mã đề 68 câu hỏi 1 giờ
17,999 xem1,377 thi
3 mã đề 148 câu hỏi 1 giờ
62,513 xem4,803 thi
1 mã đề 55 câu hỏi 1 giờ
77,395 xem5,947 thi
2 mã đề 96 câu hỏi 1 giờ
69,392 xem5,334 thi