20/6/2011, 00:21
Mới có mấy đề, anh em vọc nhanh nhé
1. Xây dựng class CPoint với các yêu cầu sau
CPoint có 2 biến thành viên, không cho phép truy cập trực tiếp các biến thành viên từ bên ngoài class là:
o Tung độ x.
o Hoành độ y.
Có 1 trong số các constructor (nếu thí sinh thiết kế CPoint có nhiều hơn 1 constructor) của CPoint để khởi tạo các biến thành viên.
Có 1 hàm thành viên dùng để nhập một điểm từ bàn phím.
Có 1 hàm thành viên dùng để xuất thông tin của một điểm ra màn hình.
Có 1 hàm thành viên dùng để di chuyển điểm sang phải 1 đơn vị.
Có 1 hàm thành viên dùng để kiểm tra 3 điểm thẳng hàng. (Giả sử a, b, c lần lượt là khoảng cách từ A->B, B->C, A->C. Điều kiện để 3 điểm thẳng hàng là a+b=c hoặc a+c=b hoặc b+c=a)
2. Chương trình chính (hàm main( ) hoặc tương đương)
Trong chương trình chính thí sinh viết mã (program code) tạo ra một object (P1) thuộc class CPoint được khởi tạo bởi các giá trị tùy ý và một object khác (P2) nhập từ bàn phím. Tính khoảng cách giữa P1 và P2. Di chuyển P2 sang phải 1 đơn vị và xuất thông tin của P2 ra màn hình. Tạo ra một object khác (P3), kiểm tra xem 3 điểm: P1, P2(sau khi đã di chuyển), P3 có thẳng hàng hay không.
ĐỀ BÀI
Thí sinh viết chương trình theo mô tả dưới đây
1. Xây dựng class CCircle với các yêu cầu sau
Circle có 3 biến thành viên, không cho phép truy cập trực tiếp các biến thành viên từ bên ngoài class là:
o Tung độ x.
o Hoành độ y.
o Bán kính R.
Có 1 trong số các constructor (nếu thí sinh thiết kế CCircle có nhiều hơn 1 constructor) của Circle để khởi tạo các biến thành viên.
Có 1 hàm thành viên dùng để nhập một đường tròn từ bàn phím.
Có 1 hàm thành viên dùng để xuất thông tin của một đường tròn ra màn hình.
Có 1 hàm thành viên dùng để di chuyển tâm đường tròn lên trên 1 đơn vị.
Có 1 hàm thành viên dùng để xét vị trí tương đối của 2 đường tròn. Biết vị trí của 2 đường tròn (O, R) và (O’, R’) như sau:
o Giao nhau: |R-R’| < OO’ < R+R’
o Tiếp xúc trong: OO’ = |R-R’| >0
o Tiếp xúc ngoài: OO’ = R+R’
o Lồng nhau: OO’ < |R-R’|
o Nằm ngoài nhau: OO’ > R+R’
2. Chương trình chính (hàm main( ) hoặc tương đương)
Trong chương trình chính thí sinh viết mã (program code) tạo ra một object (C1) thuộc class CCircle được khởi tạo bởi các giá trị tùy ý và một object khác (C2) nhập từ bàn phím. Tính khoảng cách tâm của C1 và C2. Di chuyển tâm của C2 lên trên 1 đơn vị và xuất thông tin của C2 ra màn hình. Xét vị trí tương đối của hai đường tròn C1 và C2 (sau khi đã di chuyển) trên.
Câu 1:
Ta cần viết một chương trình cho phép tạo một đối tuợng hình học và một dấu chữ thập, vẽ hai đối tượng đó và thông báo cho biết hình chữ thập (tâm của nó) có nằm trong đối tượng hình học kể trên không? Đối tượng hình học có thể là ellipse, hình tròn, hình chữ nhật hay hình vuông. Yêu cầu: Hoàn toàn không có sự xuất hiện của phát biểu switch/ case trong chương trình khi được cài đặt đầy đủ.
a) Xây dựng lớp biểu diễn khái niệm hình chữ thập, hình ellipse, hình tròn, hình chữ nhật và hình vuông. Thiết lập mối quan hệ kế thừa giữa các lớp. Viết khai báo các thao tác cần thiết đủ dùng cho chương trình như mô tả ở trên. Viết định nghĩa hàm xác định hình chữ thập (tâm của nó) có nằm trong hình thuộc các loại kể trên không.
b)Viết một ứng dụng cho phép tạo một hình chữ thập và tạo một hình tùy ý trong các loại kể trên (Nhập 0: tạo hình ellipse, 1:hình tròn, 2:hình chữ nhật, 3: hình vuông). Vẽ hình chữ thập và hình đã được chọn (giả sử chế độ đồ hoạ đã được khởi động), thông báo cho biết hình chữ thập có nằm trong hình đã chọn không?
Câu 2:
Một phép toán là một ký hiệu mà nó thao tác trên dữ liệu. Dữ liệu mà phép toán thao tác được gọi là toán hạng. Mỗi toán hạng của phép toán là một biểu thức. Một biểu thức là sự kết hợp các phép toán, các hằng, biến và phép gọi hàm để gút lại một giá trị duy nhất gọi là giá trị của phép toán. Phép toán có thể một ngôi hoặc hai ngôi. Hằng, biến hay một phép toán gọi hàm đều là biểu thức. Có thể thực hiện các phép toán trên biểu thức( Ví dụ cộng hai biểu thức là một biểu thức).
Trong phạm vi bài này, ta chỉ giới hạn trong phạm vi các biểu thức thực với các phép toán cộng, trừ, nhân, chia trên các hằng, không xét các biểu thức có sự tham gia của biến cũng như sự tham gia của phép gọi hàm.
a) Tổ chức, xây dựng (các) lớp cần thiết bằng cú pháp C++ mô tả được các khái niệm phép toán, biểu thức như mô tả trên. Cần chú ý các quan hệ (ví dụ một hằng là một biểu thức). Lưu ý tổ chức cấu trúc dữ liệu để biểu diễn được biểu thức.
B) Viết khai báo các thao tác cần thiết để người sử dụng có thể tạo các biểu thức, thực hiện các phép toán cộng, trừ, nhân, chia biểu thức. Có thể xuất giá trị của biểu thức. Định nghĩa phép cộng hai biểu thức.
Ví dụ:
Bieu thuc f("5+2*3"), g(3*4-2*5), h = -f;
cout<< f()-6 << "n"; // Xuat 5
cout << (f-6)() << "n"; // Xuat 5
cout << (-f _+ 2*g) () << "n"; // Xuat -7
cout << f() + h() << "n"; // Xuat 0