LABORATORIO DI PROGRAMMAZIONE DI STRUTTURE DATI
ESERCIZI DI RIPASSO
20 Febbraio 2002
Classi e oggetti
-
Create una classe
Complex per effettuare operazioni matematiche su numeri complessi. Quindi scrivete un programma per testare la vostra classe.
I numeri complessi hanno questa forma:
parteReale + i * parteImmaginaria
dove i è l'unità immaginaria, ovvero
quel numero che moltiplicato per se stesso fornisce -1.
Rappresentate i dati della classe tramite variabili in virgola mobile. Fornite un costruttore che inizializzi ogni oggetto della classe, ed un costruttore predefinito. Fornite dei metodi public
per ciascuna delle seguenti operazioni:
- addizione di due numeri complessi;
- sottrazione di due nuemri complessi;
- prodotto di due numeri complessi;
- modulo di un numero complesso;
- visualizzazione di un numero complesso nella forma a + i b, dove a è la parte reale, b è la parte immaginaria e i è l'unità immaginaria.
-
Definite una classe
Paese
che memorizzi il nome di un paese, la sua popolazione e la sua area. Utilizzando questa classe, scrivete un programma che legga un insieme di paesi e stampi:
- il paese con l'area più grande;
- il paese con la popolazione più numerosa;
- il paese con la minore densità abitativa.
Riflettete attentamente sul problema che dovete risolvere. Di quali metodi avrete bisogno? Quindi progettate la classe e implementate i metodi. Poi scrivete il programma.
Array
-
Utilizzate un array unidimensionale per risolvere questo problema: leggete 20 numeri compresi tra 10 e 100. Per ogni numero letto, visualizzatelo solo se esso non è già stato immesso in precedenza.
-
Scrivere i seguenti metodi:
-
public static boolean equals(int[] a, int[] b)
che verifichi se due array contengono gli stessi elementi, nello stesso ordine.
-
public static boolean sameSet(int[] a, int[] b)
che verifichi se due array contengono gli stessi elementi, ignorando le molteplicità e l'ordine (probabilmente avrete bisogno di uno o più metodi di supporto).
Scrivere quindi un metodo main
per testare i due metodi implementati.
-
Implementate un algoritmo per eliminare tutti i duplicati da un array.
Per esempio, l'array
4 7 11 4 9 5 11 7 3 5
dovrebbe essere modificato in
4 7 11 9 5 3
Suggerimento
- Un semplice algoritmo: esaminate a[i] e contate quante volte ricorre nell'array a; se il conteggio è maggiore di uno toglietelo.
-
Un algoritmo più efficiente: ordinate l'array, quindi per ciascuno dei suoi elementi, esaminate il suo vicino per vedere se è presente più di una volta; in caso positivo toglietelo.
Classi, oggetti, array
- Si vogliono gestire alcune informazioni relative a partite di calcio.
- si definisca una classe giocatore, con variabili di istanza
nome, ruolo, numero, squadra
- si definisca una classe goal, con variabili di istanza
marcatore, minuto, autogoal (booleano)
- si definisca una classe partita, con variabili di istanza
squadra di casa, squadra ospite, arbitro e tabellino, che sara'
un array di goal
- si definiscano i metodi per la classe partita che
restituiscono, rispettivamente, il risultato finale e la squadra
vincitrice
(si utilizzino dei metodi ausiliari se lo si ritiene
opportuno)
- si creino degli oggetti di esempio per testare i metodi
definiti