Module: Khoa học Máy tính AP Phần II 2015


Problem

2/4

đảo ngược

Problem

Câu hỏi này thao tác với mảng một chiều và hai chiều. Trong phần (a) bạn sẽ viết phương thức đảo ngược các phần tử của mảng một chiều. Trong phần (b) và (c) bạn sẽ viết các phương thức đảo ngược các phần tử của mảng hai chiều.

(a) Hãy xem xét lớp ArrayUtil chưa hoàn thiện sau đây, lớp này chứa một phương thức ReverseArray tĩnh.
Viết phương thức ArrayUtil reverseArray. Ví dụ: nếu arr là mảng {2,7,5,1,0}, lệnh gọi ReverseArray sẽ thay đổi mảng thành {0,1,5,7,2}. Hoàn thành phương thức reverseArray bên dưới.

/** Đảo ngược các phần tử của mảng arr.
* Điều kiện tiên quyết: arr.length > 0.
* Hậu điều kiện: Các phần tử của arr đã bị đảo ngược.
* @param arr mảng cần thao tác
*/
công khai tĩnh khoảng trống reverseArray(int[] mảng)

b) Xét lớp Ma trận không đầy đủ sau đây, lớp này biểu diễn một ma trận hai chiều của các số nguyên. Giả sử rằng ma trận chứa ít nhất một số nguyên.
Viết phương thức Matrix reverseAllRows. Phương pháp này đảo ngược các phần tử của mỗi hàng. Ví dụ: nếu mat1 đề cập đến một đối tượng Ma trận, thì lệnh gọi mat1.reverseAllRows() sẽ thay đổi ma trận như bên dưới.

Khi viết ReverseAllRows, bạn phải gọi phương thức ReverseArray trong phần (a). Giả sử rằng ReverseArray hoạt động chính xác bất kể những gì bạn đã viết trong phần (a). Hoàn thành phương thức reverseAllRows bên dưới.

/** Đảo ngược các phần tử trong mỗi hàng của mat.
* Hậu điều kiện: Các phần tử trong mỗi hàng đã được đảo ngược.
*/
công khai vô hiệu reverseAllRows()

 c) Viết phương thức ma trận reverseMatrix. Phương pháp này đảo ngược các phần tử của ma trận sao cho các phần tử cuối cùng của ma trận, khi được đọc theo thứ tự hàng chính, giống như các phần tử ban đầu khi được đọc từ góc dưới cùng, từ phải sang trái, đi lên. Một lần nữa, để mat1 là tham chiếu đến đối tượng Ma trận. Lệnh gọi mat1.reverseMatrix() sẽ thay đổi ma trận như bên dưới.


Khi viết ReverseMatrix, bạn phải gọi phương thức ReverseAllRows trong phần (b). Giả sử rằng ReverseAllRows hoạt động chính xác bất kể những gì bạn đã viết trong phần (b). Hoàn thành phương thức reverseMatrix bên dưới.
 
/** Đảo ngược các thành phần của mat.
* Hậu điều kiện:
* - Các phần tử cuối cùng của mat, khi được đọc theo thứ tự chính của hàng,
* giống như các phần tử ban đầu của mat khi được đọc
* từ góc dưới cùng, phải sang trái, đi lên.
* - mat[0][0] chứa phần tử ban đầu là phần tử cuối cùng.
* - mat[mat.length-1][mat[0].length-1] chứa nội dung
* ban đầu là phần tử đầu tiên.
*/
công khai vô hiệu reverseMatrix()