Module: AP Informatica Sezione II 2015


Problem

2/4

inversione

Problem

Questa domanda manipola array unidimensionali e bidimensionali. Nella parte (a) scriverete un metodo per invertire gli elementi di un array unidimensionale. Nelle parti (b) e (c) scriverai metodi per invertire gli elementi di un array bidimensionale.

(a) Si consideri la seguente classe ArrayUtil incompleta, che contiene un metodo reverseArray statico.
Scrivere il metodo ArrayUtil reverseArray. Ad esempio, se arr è l'array {2,7,5,1,0}, la chiamata a reverseArray cambia arr in {0,1,5,7,2}. Metodo completo reverseArray di seguito.

/** Inverte gli elementi dell'array arr.
* Precondizione: arr.length > 0.
* Postcondizione: gli elementi di arr sono stati invertiti.
* @param arr l'array da manipolare
*/
public static void reverseArray(int[] arr)

b) Si consideri la seguente classe Matrix incompleta, che rappresenta una matrice bidimensionale di interi. Supponiamo che la matrice contenga almeno un numero intero.
Scrivere il metodo Matrix reverseAllRows. Questo metodo inverte gli elementi di ogni riga. Ad esempio, se mat1 fa riferimento a un oggetto Matrix, la chiamata mat1.reverseAllRows() cambierà la matrice come mostrato di seguito.

Quando si scrive reverseAllRows, è necessario chiamare il metodo reverseArray nella parte (a). Supponiamo che reverseArray funzioni correttamente indipendentemente da ciò che hai scritto nella parte (a). Metodo completo reverseAllRows di seguito.

/** Inverte gli elementi in ogni riga del tappetino.
* Postcondizione: gli elementi in ogni riga sono stati invertiti.
*/
public void reverseAllRows()

 c) Scrivi il metodo Matrix reverseMatrix. Questo metodo inverte gli elementi di una matrice in modo tale che gli elementi finali della matrice, se letti in ordine di riga maggiore, siano gli stessi degli elementi originali se letti dall'angolo inferiore, da destra a sinistra, andando verso l'alto. Ancora una volta lascia che mat1 sia un riferimento a un oggetto Matrix. La chiamata mat1.reverseMatrix() cambierà la matrice come mostrato di seguito.


Scrivendo reverseMatrix, devi chiamare il metodo reverseAllRows nella parte (b). Supponiamo che reverseAllRows funzioni correttamente indipendentemente da ciò che hai scritto nella parte (b). Metodo completo reverseMatrix di seguito.
 
/** Inverte gli elementi di mat.
* Postcondizione:
* - Gli elementi finali di mat, se letti in ordine di riga maggiore,
* sono gli stessi degli elementi originali di mat una volta letti
* dall'angolo in basso, da destra a sinistra, salendo.
* - mat[0][0] contiene quello che originariamente era l'ultimo elemento.
* - mat[mat.length-1][mat[0].length-1] contiene ciò che era
* originariamente il primo elemento.
*/
public void reverseMatrix()