Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a febbraio 2013

Documenti analoghi
Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a gennaio 2012

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Gennaio 2015

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2016/ Giugno 2017

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Febbraio 2016 Testo

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Studente (Cognome Nome):

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Metodi statici. Dichiarazione e chiamata di metodi statici

Esempi di Problemi Iterativi

Algoritmi di Ricerca. Esempi di programmi Java

Esempi di Problemi Iterativi

Studente (Cognome Nome):

Insieme.java. Printed by Paolo. Feb 24, 04 16:44 Page 1/1 class Insieme { private int[] elementi; Tuesday February 24, /10

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a I scritto Febbraio 11 Febbraio 2011

Algoritmi di Ricerca. Esempi di programmi Java

Programmazione 1 A.A. 2015/2016

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1

Laboratorio di Programmazione 1 [Java]

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Algoritmi di Ricerca. Esempi di programmi Java

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Richiami di Fondamenti di Informatica - 1

Corso di Laurea Ingegneria Civile Elementi di Informatica. Esercizi. Carla Limongelli. Esercizi 1

Studente (Cognome Nome):

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Settembre 2015 Testo

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

COGNOME NOME MATRICOLA DATA

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Esercitazione 15. Il problema dello Sleeping Barber

Laboratorio di Programmazione Ottobre. Simone Zaccaria

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Programmazione II Compitino (Vers. B)

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione

Laboratorio di Programmazione 1 [Java]

Programmazione con Java

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Elementi di Informatica. Iterazione. C. Limongelli. Iterazione

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Algoritmi di ordinamento e ricerca. Classe SelSort.java

// inizializzazione della biblioteca con utenti, libri e prestiti // non richiesta Biblioteca.inizializza();

Esempio: L EURO-CONVERTITORE (1) Scopo

Informatica 1. Prova di recupero 21 Settembre 2001

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Le Stringhe. Usare la classe java.lang.string

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Programmazione I - Laboratorio

TEMA D ESAME 1. Segnalare eventuali errori o situazioni non gestibili con opportune eccezioni o messaggi di errore. TEMA D ESAME 2

Esercizi. Stringhe. Stringhe Ricerca binaria

/***************************** FILE: Quiz.java *****************************/ public class Quiz { private String text; private int score;

Esercizi della lezione 5 di Java

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

1 (4) 2 (4) 3 (7) 4 (5) 5 (6) 6 (6)

Costrutti iterativi. Utilizzo dei costrutti iterativi

Esercizi su programmazione ricorsiva 1. Pericle Perazzo 23 marzo 2012

Esercizio 1 (15 punti)

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Testing. Esempio. Esempio. Soluzione 1. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009. Come fare???

Array mono- e bi-dimensionali Cicli while e do-while

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.)

La programmazione nel linguaggio C

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

FONDAMENTI DI INFORMATICA

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Esercitazione 7. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Eccezioni Precisazioni e approfondimenti

Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002. Sistemi Operativi Corsi A e B. Esercitazioni 7 e 8

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Passaggio di parametri

Fondamenti di Programmazione Recupero Primo Parziale 30 Gennaio 2008 Traccia A

Esercitazione n 2. Obiettivi

Informatica 3 secondo recupero 13 Settembre 2002

Linguaggi di programmazione II AA 2010/2011 Esercitazione 2

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

ESERCIZIO 1. AZ111 milano 12:34 23 AZ222 buenos-aires 12: BA333 toronto 4:15 20 KM444 madrid 10:12 100

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Esempi in Java di program.ne O-O

C: panoramica. Violetta Lonati

Transcript:

Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 22 febbraio 2013 Testo Il database di un videonoleggio è costituito da due vettori paralleli. Il primo è denominato videoteca e contiene oggetti di tipo Film che rappresentano i film presenti nell archivio. Il secondo vettore è denominato noleggi e contiene oggetti di tipo Noleggio che rappresentano le informazioni di noleggio di un film. Le informazioni di noleggio del film presente in una determinata posizione nel vettore videoteca, si trovano nella corrispondente posizione nel vettore noleggi. Nel caso un dato film non sia stato noleggiato, nella sua posizione nel vettore noleggi sarà presente un riferimento null. Entrambi i vettori hanno dimensione pari alla costante MAX_FILM (inizializzata a 256). Se il numero di film contenuti nell archivio è inferiore a MAX_FILM, i primi elementi del vettore conterranno gli oggetti di tipo Film, mentre gli altri conterranno riferimenti null. Tutti gli elementi null del vettore videoteca si devono trovare alla fine del vettore e non possono trovarsi in mezzo agli elementi validi. Le classe Film contiene le informazioni relative ad un film ed un metodo per la stampa a video di queste informazioni: public class Film { private int codice; public String titolo; public String regia; public int anno; public String[] cast; public Film(int co, String t, String r, int a, String[] ca) { codice = co; titolo = t; regia = r; anno = a; cast = ca; public int getcodice() { return codice; public void stampainfo() { System.out.println("Film n " + codice + " / " + titolo + " / " + anno + " / " + regia); if (cast!= null && cast.length > 0) { System.out.print("\tCast:"); for (int i = 0; i < cast.length - 1; i++) { System.out.print(" " + cast[i] + ","); System.out.println(" " + cast[cast.length - 1]); La classe Noleggio contiene il nome dell utente che ha noleggiato un determinato film e la data di noleggio: public class Noleggio { public String utente; public int giorno; public int mese; public int anno; public Noleggio(String u, int g, int m, int a) { utente = u; giorno = g; mese = m; anno = a;

Si consiglia di procedere nel seguente modo: implementare un metodo e successivamente scrivere la parte del main che utilizza tale metodo, in modo da poterne verificare immediatamente la correttezza. Le varie operazioni devono essere eseguite sulla porzione significativa dell archivio, cioè la porzione di videoteca che non contiene riferimenti null. a) Scrivere il metodo statico: public static int contafilmanno(film[] filmdb, int a) Il metodo deve ritornare il numero di film presenti nel vettore filmdb che siano stati girati in un anno successivo a quello specificato dal parametro a. b) Scrivere il metodo statico: public static Film[] sostituisciregia(film[] filmdb, String oldreg, String newreg) Il metodo deve cercare nel vettore filmdb i film diretti dal regista oldreg e sostituire il campo regia di tali film con newreg. Il metodo deve inoltre ritornare un vettore contenente i film modificati. c) Scrivere il metodo statico: public static void ordinacar(film[] filmdb, Noleggio[] noldb, char ch) Il metodo deve ordinare, in ordine crescente, il database specificato dai parametri filmdb e noldb a seconda della somma del numero di occorrenze del carattere ch nelle stringhe rappresentanti il titolo, il regista e gli attori del cast del film. d) Scrivere il metodo statico: public static boolean eliminaregia(film[] filmdb, Noleggio[] noldb, String reg) Il metodo deve eliminare dal database specificato dai parametri filmdb e noldb tutti i film del regista reg, a patto che non siano noleggiati. Se almeno uno dei film è noleggiato, il metodo non deve eliminare nessun film. Il valore di ritorno deve essere true se l eliminazione avviene con successo, oppure false in caso almeno un film sia noleggiato. e) Scrivere il metodo main che: definisca ed inizializzi i vettori videoteca e noleggi secondo i valori riportati in tabella e stampi a video l archivio. La stampa dell archivio consiste nella stampa delle informazioni di ogni film (usando il metodo stampainfo della classe Film ) e, se il film è noleggiato, deve essere indicato anche l utente e la data di noleggio. Codice Titolo Regia Anno Cast Utente Data 0 Jackie Brown Quentin Tarantino 1997 Pam Grier Samuel L. Jackson 1 Pulp Fiction Quentin Tarantino 1994 John Travolta Samuel L. Jackson 2 Cloud Atlas Larry e Andy Tom Hanks 2012 Wachowski Hugo Weaving Gianni Verdi 01/02/2013 3 Matrix Larry e Andy Keanu Reeves 1999 Wachowski Hugo Weaving Mario Rossi 30/01/2013 stampi il numero di film girati dopo il 1995 usando il metodo contafilmanno. sostituisca il campo regia dei film diretti da Larry e Andy Wachowski con Lana e Andy Wachowski usando il metodo sostituisciregia, stampi il titolo dei film modificati e stampi l archivio aggiornato. ordini l archivio a seconda del numero di occorrenze del carattere o utilizzando il metodo ordinacar e stampi a video l archivio ordinato. elimini i film di Quentin Tarantino dall archivio utilizzando il metodo eliminaregia" e stampi a video l esito e, in caso di esito positivo, l archivio aggiornato.

Soluzione /* * Nome * Cognome * Matricola * Postazione */ public class Esame { public static final int MAX_FILM = 256; /* * Questo metodo conta i film presenti nell'archivio. Non è richiesto dal * testo, ma semplifica la scrittura degli altri metodi. */ public static int contafilm(film[] filmdb) { int nfilm = 0; while (nfilm < MAX_FILM && filmdb[nfilm]!= null) { nfilm++; return nfilm; /* * Questo metodo stampa le informazioni relative a tutti i film presenti * nell'archivio e, per i film noleggiati, indica l'utente che li ha * noleggiati e la data di noleggio. Non è richiesto dal testo, ma * semplifica la scrittura del main. */ public static void stampaarchivio(film[] filmdb, Noleggio[] noldb) { /* Conteggio dei film presenti nell'archivio */ filmdb[i].stampainfo(); if (noldb[i]!= null) { System.out.println("\tNoleggiato a " + noldb[i].utente + " il " + noldb[i].giorno + "/" + noldb[i].mese + "/" + noldb[i].anno);

public static int contafilmanno(film[] filmdb, int a) { int conta = 0; if (filmdb[i].anno >= a) { conta++; return conta; public static Film[] sostituisciregia(film[] filmdb, String oldreg, String newreg) { int nris = 0; if (filmdb[i].regia.equals(oldreg)) { nris++; Film[] ris = new Film[nRis]; int k = 0; if (filmdb[i].regia.equals(oldreg)) { filmdb[i].regia = newreg; ris[k] = filmdb[i]; k++; return ris;

public static int contaoccorrenze(film f, char ch) { int occ = 0; for (int j = 0; j < f.titolo.length(); j++) { if (f.titolo.charat(j) == ch) { occ++; for (int j = 0; j < f.regia.length(); j++) { if (f.regia.charat(j) == ch) { occ++; for (int i = 0; i < f.cast.length; i++) { for (int j = 0; j < f.cast[i].length(); j++) { if (f.cast[i].charat(j) == ch) { occ++; return occ; public static void ordinacar(film[] filmdb, Noleggio[] noldb, char ch) { /* Conteggio dei film presenti nell'archivio */ /* Ordinamento */ for (int i = 0; i < nfilm - 1; i++) { for (int j = i + 1; j < nfilm; j++) { if (contaoccorrenze(filmdb[i], ch) > contaoccorrenze(filmdb[j], ch)) { Film tmp = filmdb[i]; filmdb[i] = filmdb[j]; filmdb[j] = tmp; Noleggio tmp2 = noldb[i]; noldb[i] = noldb[j]; noldb[j] = tmp2;

// soluzione "bella" anche se non efficiente public static boolean eliminaregia(film[] filmdb, Noleggio[] noldb, String reg) { boolean noleggiato = false; if (filmdb[i].regia.equals(reg) && noldb[i]!= null) { noleggiato = true; if (!noleggiato) { if (filmdb[i].regia.equals(reg)) { filmdb[i] = null; for (int i = 0; i < nfilm - 1; i++) { for (int j = 0; j < nfilm; j++) { if(filmdb[i] == null && filmdb[j]!= null) { Film tmp = filmdb[i]; filmdb[i] = filmdb[j]; filmdb[j] = tmp; Noleggio tmp2 = noldb[i]; noldb[i] = noldb[j]; noldb[j] = tmp2; return!noleggiato; public static void main(string[] args) { Film videoteca[] = new Film[MAX_FILM]; Noleggio noleggi[] = new Noleggio[MAX_FILM]; videoteca[0] = new Film(0, "Jackie Brown", "Quentin Tarantino", 1997,

new String[] { "Pam Grier", "Samuel L. Jackson" ); videoteca[1] = new Film(1, "Pulp Fiction", "Quentin Tarantino", 1994, new String[] { "John Travolta", "Samuel L. Jackson" ); videoteca[2] = new Film(2, "Cloud Atlas", "Larry e Andy Wachowski", 2012, new String[] { "Tom Hanks", "Hugo Weaving" ); videoteca[3] = new Film(3, "Matrix", "Larry e Andy Wachowski", 1999, new String[] { "Keanu Reeves", "Hugo Weaving" ); noleggi[2] = new Noleggio("Mario Rossi", 1, 2, 2013); noleggi[3] = new Noleggio("Gianni Verdi", 30, 1, 2013); System.out.println("Archivio film:"); stampaarchivio(videoteca, noleggi); System.out.println(); System.out.println("Nell'archivio sono presenti " + contafilmanno(videoteca, 1995) + " girati dopo il 1995"); System.out.println(); Film[] ris = sostituisciregia(videoteca, "Larry e Andy Wachowski", "Lana e Andy Wachowski"); System.out.println("Sono stati aggiornati i seguenti film:"); for (int i = 0; i < ris.length; i++) { System.out.println(ris[i].titolo); System.out.println("Archivio aggiornato:"); stampaarchivio(videoteca, noleggi); System.out.println(); ordinacar(videoteca, noleggi, 'o'); System.out.println("Archivio ordinato:"); stampaarchivio(videoteca, noleggi); System.out.println();

if (eliminaregia(videoteca, noleggi, "Quentin Tarantino")) { System.out.println("Film eliminati correttamente."); System.out.println("Archivio aggiornato: "); stampaarchivio(videoteca, noleggi); else { System.out.println("Impossibile eliminare i film.");