/** Classe della Prova di Esame di Programmazione I e Laboratorio del 8 luglio 2003 */ public class ProvaArrayLuglio { /** deve prendere come parametri due array a e b di elementi di tipo booleano e restituire il risultato del seguente calcolo: \/ i=0..n-1 (a[i] /\ b[i]). Si verifiche che la lunghezza dei due array sia uguale. @param a primo array di elementi di tipo boolean @param b primo array di elementi di tipo intero @return \/ i=0..n-1 (a[i] /\ b[i]). */ public static boolean andOrI(boolean[] a, boolean[] b) { if ((a == null) || (b == null) || (a.length != b.length)) throw new IllegalArgumentException("Array di lunghezza diversa o non inizializzati"); boolean ris = false; for (int i=0; i < a.length; i++) ris = ris || (a[i] && b[i]); return ris; } /** deve prendere come parametri due array a e b di elementi di tipo booleano e restituire il risultato del seguente calcolo: \/ i=0..n-1 (a[i] /\ b[i]). Si verifiche che la lunghezza dei due array sia uguale. Versione piu` efficiente, sfrutta il fatto che e` sufficiente che una sola coppia a[i] /\ b[i] sia true perche` tutta l'espressione or sia true. @param a primo array di elementi di tipo boolean @param b primo array di elementi di tipo intero @return \/ i=0..n-1 (a[i] /\ b[i]). */ public static boolean andOrII(boolean[] a, boolean[] b) { if ((a == null) || (b == null) || (a.length != b.length)) throw new IllegalArgumentException("Array di lunghezza diversa o non inizializzati"); boolean ris = false; int i = 0; while (!ris && (i < a.length)) { ris = (a[i] && b[i]); i++; } return ris; } /** Risultato atteso dal main: Risultato calcolo: true Risultato calcolo: true Risultato calcolo: false Risultato calcolo: false */ public static void main(String[] args) { boolean[] a = {true, true, true, true}; boolean[] b = {false, false, true, false}; System.out.println("Risultato calcolo: " + andOrI(a, b)); System.out.println("Risultato calcolo: " + andOrII(a, b)); a = new boolean[]{true, true, true, true}; b = new boolean[]{false, false, false, false}; System.out.println("Risultato calcolo: " + andOrI(a, b)); System.out.println("Risultato calcolo: " + andOrII(a, b)); } }