Đọc bản đồ một lục địa chưa được biết đến từ tệp dữ liệu vào theo định dạng ASCII và hiển thị nó lên màn hình cùng với kiểu tọa độ ban đầu như trong ví dụ 1.. Hiển thị bản đồ đã được kh[r]
Trang 1Đề thi Olympiad Tin học Quốc tế 1992
Cuộc thi Olympiad Quốc tế môn Tin học lần thứ tư tổ chức tại Bonn, Germany, tháng 7 năm 1992
1 Khám phá bản đồ
Một bản đồ hình chữ nhật có kích thước theo hệ tọa độ là 48 x 16 Hai tọa độ được gọi là nối với nhau nếu chúng liền nhau theo cả hướng Bắc-Nam và hướng Đông-Tây Ban đầu, mỗi tọa độ chỉ được biết là Mặt nước W (WATER) hoặc Đất liền G (GROUND)
Có bốn kiểu tọa độ Đất liền (GT): G, M, P và C Và có bốn kiểu tọa độ Mặt nước (WT): W, O,
B và L Giả sử bên ngoài bản đồ là Đại dương (O)
Các quy tắc địa lý cho việc chuyển kiểu tọa độ, có thể là một:
- Núi (M): Nếu 1 tọa độ GT được nối với 4 tọa độ GT khác
- Bán đảo (P): Nếu 1 tọa độ GT được nối với 3 tọa độ WT; hoặc 2 tọa độ WT và ít nhất 1 tọa độ P; hoặc 1 tọa độ WT và ít nhất 2 tọa độ P
- Bờ biển (C): Nếu 1 tọa độ GT không phải là tọa độ M hay P
- Đại dương (O): Nếu 1 tọa độ WT nối với ít nhất một tọa độ O
- Vịnh (B): Nếu 1 tọa độ O được nối với ít nhất 2 tọa độ B và nhiều nhất 1 tọa độ O, hoặc với 1 tọa độ B và ít nhất 2 tọa độ GT, hoặc ít nhất 2 tọa độ GT và ít nhất 1 tọa độ O
- Hồ (L): Nếu 1 tọa độ W không đổi đến khi không thực hiện được phép chuyển kiểu tọa độ nào nữa
Điều này có thể xảy ra sau khi một tọa độ cụ thể đã được chuyển kiểu thì nó có thể được chuyển kiểu một lần nữa vì kiểu của một số tọa độ lân cận có thể thay đổi trong lúc đó
Một bản đồ được khám phá nếu không thực hiện được phép chuyển tọa độ nào nữa
Yêu cầu: Hãy viết chương trình thực hiện công việc sau:
1 Đọc bản đồ một lục địa chưa được biết đến từ tệp dữ liệu vào theo định dạng ASCII và hiển thị
nó lên màn hình cùng với kiểu tọa độ ban đầu như trong ví dụ 1
2 Khám phá bản đồ và đổi kiểu tọa độ với M, P, C, O, B hoặc L theo quy tắc địa lý
3 Hiển thị bản đồ đã được khám phá lên màn hình với kiểu tọa độ cuối cùng như trong ví dụ 2
4 Viết một bản sao màn hình biểu diễn bản đồ đã được khám phá và kiểu tọa độ cuối cùng trong một tệp kết quả ra định dạng ASCII
Yêu cầu kỹ thuật
Yêu cầu 1: Lưu chương trình kết quả vào một tệp văn bản ASCII đặt tên là
"C:\IOI\DAY-1\411-PROG.xxx" Phần mở rộng xxx là:
- BAS với chương trình BASIC, C với chương trình C,
- LCN với chương trình LOGO, PAS với chương trình PASCAL
Yêu cầu 2: Tên tệp dữ liệu vào theo định dạng ASCII chứa bản đồ chưa dược khám phá được lưu
ở "C:\IOI\DAY-1\411-MAP.IN"
Yêu cầu 3: Tên tệp kết quả ra theo định dạng ASCII chứa bản đồ đã được khám phá và các thống
Trang 2kê được lưu ở "C:\IOI\DAY-1\411-MAP.OU"
Ví dụ
Ví dụ 1: Màn hình hiển thị một bản đồ chưa được khám phá và kiểu tọa độ ban đầu:
G = 61, W = 707 Tổng cộng =768
Ví dụ 2: Màn hình hiển thị bản đồ đã được khám phá, gồm cả kiểu tọa độ cuối cùng:
P = 8, C = 47, M = 6, O = 685, B =17, L = 5, Tổng cộng =768