Tema 53
Scrivere un metodo isTriangolareSuperiore che riceve in ingresso una matrice di interi M e restituisce TRUE se essa risulta trinagolare superiore; FALSE altrimenti. Per il nostro obiettivo, definiamo matrice triangolare superiore una matrice in cui tutti gli elementi al di sotto della diagonale principale sono nulli e gli elementi dalla diagonale in su non sono tutti nulli.
Ad esempio, sia M la matrice così costituita
1 |
2 |
0 |
0 |
0 |
4 |
0 |
0 |
0 |
0 |
0 |
8 |
0 |
0 |
0 |
9 |
allora isTriangolareSuperiore(M) = TRUE
public class tema53 { public static boolean isTriangolareSuperiore (int[][] M){ // basterà verificare che gli elementi al di sotto della diagonale principale // siano tutti nulli mentre i restanti // elementi non siano tutti nulli; in caso contrario il risultato sarà FALSE // approntiamo una variabile boolean che ci servirà per fare una doppia verifica boolean esito = true; // avviamo un ciclo per scorrere la parte sottostante la diagonale, cominciando // dalla prima riga e ancorando // la mobilità dell’indice delle colonne in maniera opportuna for(int i = 1; i < M.length; i++){ for(int j = 0; j < i-1; j++) // appena si dovesse individuare un elemento diverso da zero in questa porzione // di matrice if( M[i][j] != 0) // il risultato sarà negativo esito = false; } // nel caso in cui questa prima verifica desse risultato positivo, avviamo un // secondo ciclo per la seccessiva // verifica, cioè ci accertiamo che esista almeno un elemento non nullo tra i // restanti elementi for(int i = 0; i < M.length; i++){ for(int j = i; j < M[0].length; j++) // nel caso in cui venisse individuato un primo elemento diverso da zero e la // verifica precedente avesse // avuto esito positivo if (M[i][j] != 0 && esito) // il metodo restituirà TRUE return true; } // altrimenti FALSE return false; } /* Applicazione di prova */ public static void main(String[] args) { int[][] M ={{1,2,0,0}, {0,4,0,0}, {0,0,0,8}, {0,0,0,9}}; System.out.println(isTriangolareSuperiore (M)); // il risultato sarà TRUE System.out.println(); int[][] Q ={{1,2,3,4}, {0,4,5,6}, {5,0,7,8}, {0,0,0,9}}; System.out.println(isTriangolareSuperiore (Q)); // il risultato sarà FALSE System.out.println(); // verifichiamo che non è sufficiente avere nulli tutti gli elementi al di sotto // della diagonale principale // ma occorre che ci sia almeno un elemento non nullo tra i restanti per // ottenere TRUE int[][] N ={{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}}; System.out.println(isTriangolareSuperiore (N)); } }