Informatica Strutture dati Laboratorio Esercizio 1. Progettate la classe Frazione Il costruttore con un solo argomento restituisce la frazione il cui numeratore è x e denominatore 1, il costruttore con argomenti x e y restituisce la frazione il cui numeratore è x e denominatore y, il metodo piu() restituisce la somma tra due frazioni, per() il prodotto e così via. Esercizio 2. Progettate le classi ConsoleInputManager e ConsoleOutputManager. Il metodo readSiNo() accetta solo uno dei caratteri Y, y, S, s, N, n e restituisce true se il carattere introdotto è Y, y, S o s, false se il carattere inserito è N o n. In tutti gli altri casi, richiede all'utente di reinserire il carattere. Tutti i metodi “read()” chiedono all'utente di inserire il dato corrispondente al tipo indicato e restituiscono quel dato se l'input è corretto, chiedono invece di introdurre nuovamente il dato se esso non è del tipo previsto; msg è un “messaggio” visualizzato all'utente. Brescia 1 dic 2011 Pag. 1/2 Prof. Cozzetto Informatica Strutture dati Laboratorio Esercizio 3. Implementate in Java una pila (o stack) con un array di oggetti di tipo T (T è una classe “generica”). a è l'array i cui elementi sono di tipo T, MAX è la dimensione dell'array (costante) e n è il numero di elementi contenuti nella pila in un certo momento (n<=MAX e n>=0). Il metodo pop() estrae un elemento dalla pila eliminandolo dalla struttura, mentre top() restituisce la “cima” della pila ma non elimina l'elemento. Il metodo isEmpty() restituisce true se la pila è vuota, false in caso contrario, mentre isFull() restituisce true se la pila ha raggiunto il numero massimo di elementi, false in caso contrario. Esercizio 4. Un insegnante prende nota su un foglio di carta degli studenti da interrogare in un certo periodo. Per ogni giorno, vengono riportati i nomi degli studenti come nello schema seguente: lun-03/11/2011: Rossi, Verdi, Gialli mer-05/11/2011: Bruni gio-06/11/2011: Bianchi, Ferrari, Rastelli, Guidi lun-10/11/2011: Capperi, Terenzi Accanto al nome, egli segnerà il voto. Progettate un applicativo Java che memorizzi le informazioni e visualizzi giorno per giorno gli studenti da interrogare (col voto se esiste). Quale è la struttura dati più adatta? Esercizio 5. In una università, i dati relativi agli esami, prima di essere resi “persistenti” su memoria di massa, vengono temporaneamente memorizzati in memoria centrale. Per ogni studente vengono memorizzati i dati anagrafici, la matricola e la data di nascita. Per ogni materia, il codice e la denominazione. Di ogni esame, viene registrato il voto (in centesimi) e la data. Progettate un programma Java che vi consenta di memorizzare queste informazioni e di ottenere la media aritmetica dei voti di una certa materia (la denominazione) fornita in input. Per esempio, se i dati da memorizzare fossero Algebra: 88,74, 93, 82 Geometria: 60, 70, 89, 100, 86, 65, 64 Informatica: 78,99,65,67 e si richiedesse “Algebra”, la media aritmetica sarebbe di 78,33. Brescia 1 dic 2011 Pag. 2/2 Prof. Cozzetto