Module: AP Ciência da Computação Seção II 2015


Problem

2/4

reverter

Problem

Esta questão manipula matrizes unidimensionais e bidimensionais. Na parte (a), você escreverá um método para inverter elementos de uma matriz unidimensional. Nas partes (b) e (c) você escreverá métodos para inverter elementos de um array bidimensional.

(a) Considere a seguinte classe ArrayUtil incompleta, que contém um método reverseArray estático.
Escreva o método ArrayUtil reverseArray. Por exemplo, se arr for a matriz {2,7,5,1,0}, a chamada para reverseArray altera arr para {0,1,5,7,2}. Complete o método reverseArray abaixo.

/** Elementos inversos do array arr.
* Pré-condição: arr.length > 0.
* Pós-condição: Os elementos de arr foram invertidos.
* @param arr o array a ser manipulado
*/
public estático void reverseArray(int[] arr)

b) Considere a seguinte classe Matrix incompleta, que representa uma matriz bidimensional de inteiros. Assuma que a matriz contém pelo menos um inteiro.
Escreva o método Matrix reverseAllRows. Este método inverte os elementos de cada linha. Por exemplo, se mat1 se refere a um objeto Matrix, então a chamada mat1.reverseAllRows() mudará a matriz conforme mostrado abaixo.

Ao escrever reverseAllRows, você deve chamar o método reverseArray na parte (a). Suponha que reverseArray funcione corretamente independentemente do que você escreveu na parte (a). Complete o método reverseAllRows abaixo.

/** Inverte os elementos em cada linha do tapete.
* Pós-condição: os elementos em cada linha foram invertidos.
*/
public void reverseAllRows()

 c) Escreva o método Matrix reverseMatrix. Este método inverte os elementos de uma matriz de forma que os elementos finais da matriz, quando lidos na ordem das linhas principais, sejam os mesmos que os elementos originais quando lidos do canto inferior, da direita para a esquerda, indo para cima. Novamente, deixe mat1 ser uma referência a um objeto Matrix. A chamada mat1.reverseMatrix() irá alterar a matriz conforme mostrado abaixo.


Ao escrever reverseMatrix, você deve chamar o método reverseAllRows na parte (b). Suponha que reverseAllRows funcione corretamente independentemente do que você escreveu na parte (b). Método completo reverseMatrix abaixo.
 
/** Inverte os elementos do mat.
* Pós-condição:
* - Os elementos finais do mat, quando lidos na ordem principal da linha,
* são iguais aos elementos originais do mat quando lidos
* do canto inferior, da direita para a esquerda, subindo.
* - mat[0][0] contém o que originalmente era o último elemento.
* - mat[mat.length-1][mat[0].length-1] contém o que era
* originalmente o primeiro elemento.
*/
public void reverseMatrix()