Complementi Di A - Esercitazione 5

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Complementi Di A - Esercitazione 5 as PDF for free.

More details

  • Words: 825
  • Pages: 6
Correzione dell'Esercitazione di Complementi di Informatica del 17 giugno 2008 Esercizio 1 Scrivere un programma Java caratterizzato dal solo metodo main. Questo programma deve: (1) leggere un numero intero N digitato dall'utente (tramite l'apposito metodo della classe SavitchIn); (2) N stringhe S1, S2, ..., SN digitate dall'utente dopo il numero N (tramite l'apposito metodo della classe SavitchIn); (3) stampare a video la più corta tra le stringhe S1, S2, ..., SN. Ad esempio: Se l'utente scrive 3 e successivamente scrive ciao, poi buongiorno a tutti, ed in fine elefante, il programma deve stampare a video ciao.

Svolgimento class Esercizio { public static void main (String [] args) { System.out.println("Quante stringhe vuoi scrivere?"); int numStringhe = SavitchIn.readLineInt(); String stringaPiuCorta, s; if (numStringhe > 0) { stringaPiuCorta = SavitchIn.readLine(); for (int i = 1; i < numStringhe; i++) { s = SavitchIn.readLine(); if (s.length() < stringaPiuCorta.length()) { stringaPiuCorta = s; } } System.out.println("Stringa piu corta: " + stringaPiuCorta);

1

} else { System.out.println("Hai scelto di non scrivere nessuna stringa"); } }

Esercizio 2 Scrivere un metodo Java statico chiamato isIdentity che riceve in ingresso una matrice (vettore bidimensionale) A di numeri interi e restituisce come risultato un valore booleano uguale a true se la matrice A è uguale alla matrice identità e uguale a false altrimenti.

Svolgimento static boolean isIdentity (int [][] A) { boolean tuttoOk = true; for (int i = 0; (i < A.length && tuttoOk); i++) { for (int j = 0; (j < A[i].length && tuttoOk); j++) { if ( ! ((i == j) && (A[i][j] == 1)) || ((i != j) && (A[i][j] == 0))) { tuttoOk = false; } } } return(tuttoOk); }

2

Esercizio 3 Scrivere un metodo Java statico chiamato prodottoMatrici che riceve in ingresso due matrici (vettori bidimensionali) A e B di numeri reali. Il metodo prodottoMatrici deve: •

Controllare che il numero di colonne di A sia uguale al numero di righe di B. In caso contrario, stampare a video un messaggio di errore ed arrestare l'esecuzione del programma.



Qualora il numero di colonne di A sia uguale al numero di righe di B, restituire come risultato una matrice uguale al prodotto tra A e B.

Svolgimento static double [][] prodottoMatrici (double[][] A, double[][] B) { double[][] M; double somma; // ... eventualmente inserire qui il codice per inizializzare la matrice M // ... con dei valori di default if (A.length != B[0].length) { // ... stampa di errore e terminazione } else { for (int i = 0; i < A.length; i++) { for (int j = 0; j < B[i].length; j++) { somma = 0; for (int z = 0; z < B.length; z++) { somma = somma + A[i][z] * B[z][j]; } M[i][j] = somma; } } } return(M); }

3

Esercizio 4 Scrivere un programma Java composto da: •

Una classe CertificatoDiResidenza caratterizzata da un nome, un cognome, una città di residenza (tutti e tre questi attributi possono essere rappresentati come stringhe), un riferimento al certificato successivo in una pila e un metodo per stampare tutte le informazioni che caratterizzano questa classe.



Una classe Pila, che realizza una pila di certificati di residenza, caratterizzata da un metodo per inserire un nuovo certificato sulla testa della pila, un metodo per togliere un elemento dalla pila prendendolo dalla testa e un metodo per stampare tutti i certificati che sono nella pila. I parametri del metodo che inserisce i certificati nella pila devono essere un nome, un cognome e una città (in altri termini, chi usa questo metodo può non essere a conoscenza dell'esistenza della classe CertificatoDiResidenza).



Una classe ImpiegatoComunale contenente il metodo main che istanzia una pila di certificati di residenza, vi inserisce un numero a piacere di certificati e successivamente elimina i certificati dalla pila fino a che non trova in testa alla pila un certificato appartenente a una persona di nome Mario Rossi. Una volta trovato questo certificato, stampa la città di residenza di Mario Rossi.

Svolgimento class CertificatoDiResidenza { String nome; String cognome; String citta; CertificatoDiResidenza succ; CertificatoDiResidenza (String n, String co, String ci, CertificatoDiResidenza ce) { nome = n; cognome = co; citta = ci; succ = ce; } void stampa() { System.out.println(nome + " " + cognome + " " + citta); } }

4

class Pila { CertificatoDiResidenza primo; Pila (CertificatoDiResidenza p) { primo = p;} void inserisci (String nome, String cognome, String citta) { CertificatoDiResidenza c = new CertificatoDiResidenza (nome, cognome, citta, primo); primo = c; } void cancella() { if (primo != null) { primo = primo.succ; } } void stampa() { CertificatoDiResidenza c = primo; while (c != null) { c.stampa(); c = c.succ; } } }

5

class ImpiegatoComunale { public static void main (String [] args) { Pila p = new Pila(null); p.inserisci("Francesco", "Bianchi", "Roma"); p.inserisci("Mario", "Rossi", "Milano"); p.inserisci("Giuseppe", "Verdi", "Como"); //... inserire altri certificati di residenza a piacere while (! ((p.primo.nome.equals("Mario")) && (p.primo.cognome.equals("Rossi")))) { p.cancella(); } System.out.println(p.primo.citta); } }

6

Related Documents