primo compitino di Programmazione, AA 2016-17 27/04/2017
Esercizio 1) Scrivere una funzione che accetta in ingresso
una matrice bidimensionale M di numeri interi, ed un numero intero N,
e restituisce il valore booleano true se e solo se esistono due colonne
distinte contenenti il valore N.
Ad esempio per M = {{-8, 4, -8}, {-7, 5, 4}} ed N=4 il valore restituito è true.
Esempio di soluzione:
public static boolean ricercaNdueColonne(int[][] M, int N){
int conta2N=0;
for (int j=0;j<M[0].length;j++) for (int i=0;i<M.length;i++) if (M[i][j]==N)
{conta2N++; //trovato un N
if (conta2N==2) return true; //se 2 N -- true break;} //se trovato un N fine esame colonna
return false; // se arriva qui non si trovano 2 N }
Esercizio 2)
Considerando le classi viste a lezione, si aggiunga un metodo alla implementazione delle pile (implementazione statica funzionale) che, data una pila p, e due valori N ed M passati come parametri,
restituisce una pila p1 che contiene tutti i valori presenti nella pila originaria ed il valore N se N non appartiene a p
ed il valore M se M non appartiene a p.
Ad esempio se p contiene 2, 9, 5, -1, 50 ed N=3 ed M = 5
p1 conterrà 2, 9, 5, -1, 50, 3 Esempio di soluzione:
static public Pila aggiunginm (Pila p, int n, int m) { boolean trovaton=false;
boolean trovatom=false;
Pila p1=new Pila(Pila.dimensione(p)+2);
while (!Pila.pilavuota(p)){
if (Pila.top(p)==n) trovaton=true;// n e' in p if (Pila.top(p)==m) trovatom=true;// m e' in p p1=Pila.push(p1,Pila.top(p));//copia da p a p1 p=Pila.pop(p);//elimina da p valore copiato in p1 }
if (!trovaton) p1=Pila.push(p1,n);// inserisce n if (!trovatom) p1=Pila.push(p1,m);// inserisce m return p1;
}
Esercizio 3)
Considerando le classi viste a lezione, si aggiunga un metodo alla implementazione delle code (implementazione statica funzionale) che, data una coda c (non vuota), restituisce il valor medio dei valori contenuti nella coda
e stampa il valore dell’ultimo elemento della coda (il più recente).
Ad esempio se c contiene (in ordine cronologico dal più vecchio al più recente)
-6, 7, 6, 5, 4, 8
il valor medio sarà 4, e stamperà 8.
Esempio di soluzione:
public static float valorMedioEultimo(Coda c){
int contaelementi=0; // conta il num di valori in c int somma=0; //conterra' somma valori nella coda c
int ultimo=0; // conterra' il valore dell'ultimo elem in c while (!Coda.codavuota(c)){
contaelementi++;
somma=somma+Coda.top(c);
ultimo=Coda.top(c);
c=Coda.dequeue(c); // elimina valore esaminato }
System.out.println("Valore ultimo elem in c = "+ultimo);
return(somma/contaelementi); //restituisce valor medio }