Nội dung Bài tập
Mã:
DATEARRAY
Tên:
Mảng Ngày Tháng Năm
Dạng thi:
oi
Thang điểm:
10 điểm
Giới hạn thời gian:
1 giây
Giới hạn bộ nhớ:
64 MB
Được tạo bởi:
HCMUP1
Mảng Ngày Tháng Năm 
 
xây dựng cấu trúc mảng 1 chiều DATEARRAY lưu trữ những phần tử thuộc cấu trúc ngày ,tháng ,năm

  • Viết quá tải toán tử nhập ( >> ) , xuất ( << ) (xuất theo đúng định dạng DD/MM/YYYY)
  • Viết quá tải toán tử so sánh bằng ( == ) so sánh 2 mảng có tất cả các ngày có thứ trong tuần tương ứng trùng nhau (VD: ta có mảng 1 là a[2] = {02/05/2016, 05/05/2016} và mảng 2 là b[2] = {16/05/2016, 19/05/2016} sẽ bằng nhau vì a[0] và b[0] đều là thứ 2, a[1] và b[1] đều là thứ 5)
  • viết quá tải so sánh nhỏ hơn ( < ) kiểm tra tất cả số ngày của mảng 1 nhỏ hơn mảng 2 VD: ta có mảng 1 là a[2] = {02/05/2016, 05/05/2016} và mảng 2 là b[2] = {16/05/2016, 19/05/2016} sẽ trả về "TRUE" vì tất cả phần tử ngày của mảng a nhỏ hơn mảng b )
  • viết quá tải toán tử cộng ( + ) để gộp 2 mảng thành 1 mảng 
  • viết quá tải toán tử trừ ( - ) để tạo thành 1 mảng là số ngày giữa 2 ngày tương ứng của từng mảng với c[i] là số ngày giữa ngày a[i] và ngày b[i] với mọi i < số phần tử của 2 mảng ) 
  • viết hàm xác định mảng có thứ tự giảm dần (trả về -1 ) hay tăng dần (trả về 1) hay không có thứ tự  (trả về 0) theo ngày, tháng, năm 
  • viết hàm sắp xếp mảng theo thứ tự giảm dần theo ngày, tháng, năm  
  • viết hàm sắp xếp mảng theo thứ tự tăng dần theo ngày, tháng, năm  

gợi ý : cách tính thứ của ngày trong năm :
nếu tháng của ngày đó nhỏ hơn 3 thì biến đổi tháng = tháng + 12 , năm  = năm - 1 ,nếu tháng của ngày đó lớn hơn 2 thì giữ nguyên ,sau đó thế vào CT : 
  • n = (ngày+2*tháng+(3*(tháng+1)) / 5 + năm + (năm / 4)) % 7 
  • với n = 0 là Chủ Nhật, n = 1 là thứ 2 , n = 3 là thứ 3,.....

lưu ý : 
Chủ Nhật - xuất ra "Sunday"
Thứ 2 - xuất ra "Monday"
Thứ 3 - xuất ra "Tuesday"
Thứ 4 - xuất ra "Wednesday"
Thứ 5 - xuất ra "Thursday"
Thứ 6 - xuất ra "Friday"
Thứ 7 - xuất ra "Saturday"

Dữ liệu vào từ file "DATE.inp": 
  • dòng 1: n là số phần tử của mảng 1, n dòng tiếp theo là n ngày của mảng 1, mỗi phần tử có dạng DD MM YYYY
  • dòng tiếp theo sau n + 1 dòng : m là số phần tử của mảng 2, m dòng tiếp theo là m ngày của mảng 2, mỗi phần tử có dạng DD MM YYYY
  • dòng cuối cùng : chuỗi h là chỉ dẫn sắp xếp mảng của 2 mảng sau khi gộp thành 1 mảng 

Dữ liệu xuất ra file "DATE.out":
  • dòng 1:K là số ngày thuộc năm nhuận của mảng 1, K dòng tiếp theo mỗi dòng gồm ngày thuộc năm nhuận ,thuộc thứ mấy trong tuần ,ngày thứ mấy trong năm và ngày tiếp theo tương ứng của ngày đó , mỗi phần tử cách nhau 1 khoảng trắng ,nếu mảng không có ngày thuộc năm nhuận thì in ra 0
  • dòng 2:L là số ngày thuộc năm nhuận của mảng 2, L dòng tiếp theo mỗi dòng gồm ngày thuộc năm nhuận ,thứ mấy trong tuần ,ngày thứ mấy trong năm và ngày tiếp theo của ngày đó , mỗi phần tử cách nhau 1 khoảng trắng ,nếu mảng không có ngày thuộc năm nhuận thì in ra 0
  • dòng 3: Nếu 2 mảng có tất cả các ngày trùng thứ trong tuần thì in ra "TRUE", ngược lại in ra "FALSE" 
  • dòng 4: Nếu mảng 1 có số ngày thuộc năm nhuận ít hơn mảng 2 thì in ra "1 < 2" , Nếu mảng 1 có số ngày thuộc năm nhuận bằng mảng 2 thì in ra "1 = 2" ,Nếu mảng 1 có số ngày thuộc năm nhuận nhiều hơn mảng 2 thì in ra "1 > 2"
  • dòng 5: Xác định thứ tự sắp xếp ngày trong mảng 1 ,nếu Tăng dần in ra "TANG" ,nếu giảm dần thì in ra "GIAM" ,nếu mảng không có thứ tự thì in ra "KHONG CO THU TU"
  • dòng 6: Xác định thứ tự sắp xếp ngày trong mảng 2 ,nếu Tăng dần in ra "TANG" ,nếu giảm dần thì in ra "GIAM" ,nếu mảng không có thứ tự thì in ra "KHONG CO THU TU"
  • dòng 7: xuất ra mảng chứa số ngày tương ứng giữa 2 phần tử của mảng 1 và 2 với c[i] là số ngày giữa ngày a[i] và b[i] , mỗi phần tử cách nhau 1 khoảng trắng  
  • dòng 8 : số phần tử khi gộp 2 mảng thành 1 mảng ,m+ n dòng tiếp theo xuất mảng ,nếu h là "TANG" thì xuất mảng theo thứ tự tăng dần theo ngày, tháng, năm, nếu h là "GIAM" thì xuất mảng theo thứ tự giảm dần theo ngày, tháng, năm

input: 
2
04 05 2015
12 04 2016
2
15 06 2015
14 02 2012
GIAM

output: 
1
12/04/2016 Tuesday 103 13/04/2016
1
14/02/2012 Tuesday 45 15/02/2012
TRUE
1 = 2
TANG
GIAM
42 1522 
4
12/04/2016
15/06/2015
04/05/2015
14/02/2012

    Quảng cáo
       Ngôn ngữ : 

       Theme : 
Mời bạn soạn code



		



      Ai có thể xem bài này : 

Thông tin



Phần thảo luận