- .LCN với chương trình LOGO, PAS với chương trình PASCAL
3. Median Strength Bài toán
Bài toán
Một thí nghiệm không gian mới liên quan đến N vật thể được đánh số từ 1 đến N. Biết rằng là N là số lẻ. Mỗi vật thể có độ bền khác nhau được biểu diễn bằng một số tự nhiên. Độ bền được ký hiệu là Y với 1<=Y<=N. Độ bền trung bình của vật thể X được tính bằng bình quân độ bền của tất cả các đồ vật có độ bền lớn hơn và nhỏ hơn X. Hãy viết chương trình xác định vật thể với độ bền trung bình.
Thư viện
Cho trước một thư viện có tên device với ba thủ tục sau:
• • GetN không đối số được gọi một lần lúc đầu; thủ tục sẽ trả lại giá trị của N.
• • Med3 được gọi cùng ba vật thể khác nhau như các đối số; thủ tục trả lại nhãn cho vật thể với độ bền trung bình.
• • Answer được gọi một lần khi kết thúc với nhãn vật thể như đối số; thủ tục báo cáo nhãn của vật thể X với độ bền trung bình và kết thúc quá trình xử lý của chương trình.
Thư viện device tạo ra hai tệp văn bản: MEDIAN.OUT và MEDIAN.LOG. Dòng đầu tiên của MEDIAN.OUT chứa 1 số nguyên chỉ nhãn của vật thể qua thư viện khi gọi thủ tục Answer. Dòng thứ hai chứa 1 số nguyên chỉ số lần chương trình của bạn gọi thủ tục Med3. Đối thoại giữa chương trình của bạn và thư viện đượcc ghi lại trong tệp MEDIAN.LOG.
Hướng dẫn lập trình với Pascal: kèm thêm câu lệnh nhập vào
uses device; vào mã nguồn.
Hướng dẫn lập trình bằng C/C++: dùng lệnh
#include ″devicẹh″
trong mã nguồn, tạo một dự án MEDIAN.PRJ và bổ xung các tệp MEDIAN.C (MEDIAN.CPP) và DEVICẸOBJ vào dự án nàỵ
Thử nghiệm
Bạn có thể thử nghiệm với thư viện bằng cách tạo ra một tệp văn bản DEVICẸIN. Tệp này phải chứa hai dòng. Dòng đầu tiên chứa 1 số nguyên chỉ số vật thể N. Dòng thứ hai chứa các số nguyên từ 1 đến N theo thứ tự số nguyeê thứ i là độ bền của vật thể có nhãn
i.
Ví dụ
Tệp DEVICẸIN ở trên mô tả ví dụ với 5 vật thể với các độ bền sau:
Dưới đây là thứ tự đúng các thủ tục được thư viện gọi ra: 1. 1. GetN(Pascal) hoặc GetN() (C/C++) trả lại 5. 2. 2. Med3(1,2,3) trả lại 3. 3. 3. Med3(3,4,1) trả lại 4. 4. 4. Med3(4,2,5) trả lại 4. 5. 5. Answer(4) Ràng buộc • • Số vật thể N với 5<=N<=1499 và N lẻ. • • Số nhãn vật thể i với 1<=i<=N.
• • Độ bền vật thể Y với 1<=Y<=N và tất cả độ bền đều khác nhaụ
• • Tên tệp thư viện Pascal: devicẹtpu
• • Khai báo thủ tục và hàm Pascal:
function GetN: integer;
function Med3(x,y,z:integer):integer; procedure Answer(m:integer);
• • Các tên tệp thư viện C/C++: devicẹh, devicẹobj
• • Header của hàm C/C++:
int GetN(void);
int Med3(int x, int y, int z); void Answer(int m);
• • Số lần gọi thủ tục Med3 trong mỗi lần chạy không quá 7777 lần..